检查和选择的哪些值为 false?

我认为根据 W3规范,你应该

<input type="checkbox" checked="checked" />

还有

 selected="selected"

但是,大多数浏览器会接受你只写“ CHECKED”而不给它一个值。那么,如果您确实包含了这个属性,是否有任何值(一致地)会被认为是假的呢?

201471 次浏览

空字符串通常为 false。

显然,在所有浏览器中,空字符串并不被认为是空的,并且勾选属性的存在被认为是勾选的。因此,必须存在或省略整个属性。

实际上,HTML 4.01规范说明这些属性不需要值。我个人还没有遇到过这样的情况: 提供一个值会使这些控件成为未选中的。

以下是到 选定检查过了的规范文档的相应链接。

编辑: Firebug 将复选框呈现为勾选状态,而不管我为选中的属性引用了什么值(包括只是输入“勾选”而没有任何值) ,并且 IE 8的开发人员工具强制勾选 = “勾选”。但是,我不确定其他浏览器是否有类似的工具可以改变复选框的呈现状态。

checkedselected属性只允许两个值,即属性名的副本和(从 HTML 5开始)一个空字符串。给出任何其他价值都是错误的。

如果不想设置属性,那么必须省略整个属性。

注意,在 HTML 4中可以省略除值之外的所有内容。HTML 5改变了这一点,省略了除名称以外的所有内容(这没有实际区别)。

因此,该属性的完整(除了 cAsE 中的变体)有效表示集是:

<input ... checked="checked"> <!-- All versions of HTML / XHTML -->
<input ...          checked > <!-- Only HTML 4.01 and earlier -->
<input ... checked          > <!-- Only HTML 5 and later -->
<input ... checked=""       > <!-- Only HTML 5 and later -->

作为 text/HTML (HTML 或 XHTML)提供的文档将通过标记汤解析器提供,检查属性(带有任何值)的存在将被视为“ This element should be check”。因此,虽然无效,但是 checked="true"checked="yes"checked="false"都将触发检查状态。

如果给属性赋予一个不同的值,我并不想知道 XML 解析模式的错误恢复机制是什么,但是我想 期待,HTML 和/或简单错误恢复的遗留问题会以同样的方式对待它: 如果属性在那里,那么就检查元素。

(所有这些都同样适用于 selectedchecked。)

没有价值观将导致复选框取消选中。如果 checked属性存在,则无论您将其设置为什么值,都将选中该复选框。

<input type="checkbox" checked />
<input type="checkbox" checked="" />
<input type="checkbox" checked="checked" />
<input type="checkbox" checked="unchecked" />
<input type="checkbox" checked="true" />
<input type="checkbox" checked="false" />
<input type="checkbox" checked="on" />
<input type="checkbox" checked="off" />
<input type="checkbox" checked="1" />
<input type="checkbox" checked="0" />
<input type="checkbox" checked="yes" />
<input type="checkbox" checked="no" />
<input type="checkbox" checked="y" />
<input type="checkbox" checked="n" />

渲染所有现代浏览器(FF3.6,Chrome 10,IE8)中检查的所有内容。

可以通过以下方式在 javascript 中设置 check 属性。 (isOrded 存储布尔值)

<input checked={isOrdered} type="checkbox"/> Ordered