什么值检查和选择是错误的?
我认为根据W3规范,你应该这样做
<input type="checkbox" checked="checked" />
和
selected="selected"
但是,大多数浏览器都会接受它,你只需写出“CHECKED”并且不要给它一个值。 那么,如果你确实包含了属性,那么会有(一致)被认为是否为假的值?
没有值会导致复选框被取消选中。 如果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" />
checked
和selected
属性只允许两个值,它们是属性名称的副本和(从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 -->
作为文本/ HTML(HTML或XHTML)的文档将通过标签汤分析器提供,并且检查属性(具有任何值)的存在将被视为“应该检查该元素”。 因此,尽管无效, checked="true"
, checked="yes"
,并且checked="false"
将全部触发检查状态。
我还没有任何意向来找出为XML解析模式提供了哪些错误恢复机制,如果给该属性赋予不同的值,但我希望HTML和/或简单错误恢复的遗留问题可以将其视为同样的方式:如果属性存在,那么元素将被检查。
(以上所有内容同样适用于selected
因为它可以checked
。)
没有值被认为是错误的 ,只有没有该属性。 尽管有很多无效值,并且某些实现可能会将某些无效值视为假。
HTML5规范
http://www.w3.org/TR/html5/forms.html#attr-input-checked:
禁用的内容属性是布尔属性。
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>
因为它更短。
上一篇: What values for checked and selected are false?
下一篇: What is the syntax for boolean attributes, e.g. a checked checkbox, in HTML?