听起来有点像一个愚蠢的问题,但我想知道在HTML中选中/取消选中复选框的最佳方式是什么。
我见过很多不同的例子:
<input type="checkbox" checked="checked" />
<input type="checkbox" />
<input type="checkbox" checked="yes" />
<input type="checkbox" checked="no" />
<input type="checkbox" checked="true" />
<input type="checkbox" checked="false" />
哪些浏览器可以使用哪些浏览器,最重要的是,jQuery会确定在所有3个框中检查哪个框?
修改 W3C规范似乎暗示只有被检查的attr是正确的。这是否意味着checked =“false”和checked =“no”仍会检查该框?
答案 0 :(得分:31)
在HTML中:
<input type="checkbox" checked>
<input type="checkbox" checked="checked">
对于XHTML,您必须使用属性/值匹配对:
<input type="checkbox" checked="checked" />
答案 1 :(得分:7)
<强> HTML:强>
正如他们在W3C page所说的那样,任何一个都应该是正确的。只需要设置checked
属性。
正如我在Coronatus的评论中写的那样:
事实上,如果它是无关紧要的 检查,检查=“无论什么”或 检查=“检查”。它在检查 布尔值,所以它是真的 (设置)或假(未设置)。
<强> XHTML:强>
您必须指定它,因此checked="checked"
是唯一有效的。大多数浏览器可能会正确解析HTML值,但您的页面仍会出现错误。
答案 2 :(得分:5)
答案 3 :(得分:2)
快速测试显示jQuery将任何值设置为等待检查。
alert( $('input:checked').length );
// Returns 5
即使是空字符串和负值。
答案 4 :(得分:1)
根据W3C recommendations,您的第一个建议是正确的。
答案 5 :(得分:1)
“已检查”属性的存在指定了状态。该值无关紧要/不需要。
<input type="checkbox" checked="checked" />
<input type="checkbox" />
是我的建议
答案 6 :(得分:1)
我会小心在chrome,firefox和opera上使用它。 Chorme似乎出现了复选框出现问题,Firefox对样式和标签区分大小写,而且Opera似乎运行正常,但更新速度很慢。可能只是正在使用的浏览器的版本。
除此之外,我认为它应该在所有这些中运行<input type="checkbox" checked />
。唯一的区别在于各个浏览器如何在页面上显示内容。
答案 7 :(得分:1)
W3C规范似乎暗示只有被检查的attr是正确的。这是否意味着checked =“false”和checked =“no”仍会检查该框?
完全。这就是为什么使用checked="true"
和checked="yes"
这是一个坏主意,他们暗示checked="false"
和checked="no"
不会选中此框。
答案 8 :(得分:0)
HTML5规范:
http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes:
元素上存在布尔属性表示真值,缺少属性表示假值。
如果该属性存在,则其值必须是空字符串,或者是属性的规范名称的ASCII不区分大小写匹配的值,没有前导空格或尾随空格。
<强>结论强>:
让boolean
成为标记tag
的布尔属性,例如checked
和<input type="checkbox"
。
以下是有效,等效和真实:
<tag boolean />
<tag boolean="" />
<tag boolean="boolean" />
<tag boolean="BoOlEaN" />
以下是无效:
<tag boolean="0" />
<tag boolean="1" />
<tag boolean="false" />
<tag boolean="true" />
缺少属性是 false 的唯一有效语法:
<tag />
<强>建议强>
如果您关心编写有效的XHTML,请使用boolean="boolean"
,因为<tag boolean>
是无效的XHTML(但是有效的HTML),而其他替代方案的可读性较差。否则,只需使用<tag boolean>
,因为它更短。