选中和选中的值是假的?

时间:2010-11-19 19:30:27

标签: html w3c

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

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

 selected="selected"

但是,大多数浏览器会接受它,你只需要写“CHECKED”并且不给它一个值。那么,如果你确实包含了属性,那么有什么值(一直)被认为是假的吗?

6 个答案:

答案 0 :(得分:85)

无值会导致取消选中复选框。如果存在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)中呈现所有内容。

答案 1 :(得分:33)

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)的文档将通过标签汤解析器提供,并且checked属性(具有任何值)的存在将被视为“应该检查此元素”。因此,虽然无效,但checked="true"checked="yes"checked="false"都会触发检查状态。

我没有任何倾向于找出XML解析模式的错误恢复机制,如果给该属性赋予不同的值,但我期望 HTML的遗产和/或简单的错误恢复将以相同的方式处理它:如果属性在那里,则检查元素。

(以上所有内容同样适用于selectedchecked

答案 2 :(得分:12)

没有值被视为错误,只有缺少属性。但是有很多无效值,有些实现可能会将某些无效值视为false。

HTML5规范

http://www.w3.org/TR/html5/forms.html#attr-input-checked

  

disabled content属性是布尔属性。

http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes

  

元素上存在布尔属性表示真值,缺少属性表示假值。

     

如果该属性存在,则其值必须是空字符串或者是属性规范名称的ASCII不区分大小写匹配的值,没有前导空格或尾随空格。

<强>结论

以下是有效,等效和真实

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

以下是无效

<input type="checkbox" checked="0" />
<input type="checkbox" checked="1" />
<input type="checkbox" checked="false" />
<input type="checkbox" checked="true" />

缺少属性是 false 的唯一有效语法:

<input type="checkbox" />

<强>建议

如果您关心编写有效的XHTML,请使用checked="checked",因为<input checked>无效,而其他替代方案的可读性较差。否则,只需使用<input checked>,因为它更短。

答案 3 :(得分:4)

空字符串通常为false。

显然,在所有浏览器中,空字符串都不会被视为空,并且检查属性的存在意味着已检查。因此,整个属性必须存在或省略。

答案 4 :(得分:4)

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

以下是指向selectedchecked的规范文档的相应链接。

编辑:Firebug将复选框呈现为已选中,无论我在check属性的引号中添加任何值(包括只输入“已选中”且没有任何值),并且IE 8的开发人员工具强制检查= “检查”。我不确定是否存在可能改变复选框渲染状态的其他浏览器的类似工具。

答案 5 :(得分:0)

checked 属性可以在 javascript 中通过以下方式设置。 (isOrdered 存储一个布尔值)

map