选中和选中的值是假的?

mpe*_*pen 55 html w3c

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

<input type="checkbox" checked="checked" />
Run Code Online (Sandbox Code Playgroud)

 selected="selected"
Run Code Online (Sandbox Code Playgroud)

但是,大多数浏览器会接受它,你只需要写"CHECKED"并且不给它一个值.那么,如果你确实包含了属性,那么是否有任何值(一致地)被认为是假的?

mpe*_*pen 96

没有价值,这将导致该复选框是选中.如果该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" />
Run Code Online (Sandbox Code Playgroud)

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

  • @cjmling 是的,这是我最初的问题。我想我应该在我的答案中更清楚地说明这一点:*没有*值会导致它呈现未经检查的情况。如果该属性存在,则会对其进行检查。 (3认同)
  • 为什么这是公认的答案?OP 问题不是您必须设置什么值才能将其设置为未选中? (2认同)

Que*_*tin 35

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 -->
Run Code Online (Sandbox Code Playgroud)

用作text/html(HTML或XHTML)的文档将通过标记汤解析器提供,并且checked属性(具有任何值)的存在将被视为"应该检查此元素".因此,虽然无效,checked="true",checked="yes",并且checked="false"将所有触发的选中状态.

我没有任何倾向于找出XML解析模式的错误恢复机制应该为该属性赋予不同的值,但我希望 HTML的遗留和/或简单的错误恢复会将其视为同样的方法:如果属性在那里,则检查元素.

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


Cir*_*四事件 12

没有值被视为false,只有缺少属性.但是有很多无效值,有些实现可能会将某些无效值视为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:

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

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

结论

以下是有效,等效和真实的:

<input type="checkbox" checked />
<input type="checkbox" checked="" />
<input type="checkbox" checked="checked" />
<input type="checkbox" checked="ChEcKeD" />
Run Code Online (Sandbox Code Playgroud)

以下是无效的:

<input type="checkbox" checked="0" />
<input type="checkbox" checked="1" />
<input type="checkbox" checked="false" />
<input type="checkbox" checked="true" />
Run Code Online (Sandbox Code Playgroud)

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

<input type="checkbox" />
Run Code Online (Sandbox Code Playgroud)

建议

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