HTML复选框的选中属性的正确值是多少?

我们都知道如何在HTML中形成复选框输入:

<input name="checkbox_name" id="checkbox_id" type="checkbox">

我不知道-选中的复选框的技术上正确的值是多少?我看过所有这些工作:

<input name="checkbox_name" id="checkbox_id" type="checkbox" checked>
    <input name="checkbox_name" id="checkbox_id" type="checkbox" checked="on">
    <input name="checkbox_name" id="checkbox_id" type="checkbox" checked="yes">
    <input name="checkbox_name" id="checkbox_id" type="checkbox" checked="checked">
    <input name="checkbox_name" id="checkbox_id" type="checkbox" checked="true">

答案没关系吗?我看到标记为正确答案,没有证据这里规范本身:

复选框(和单选按钮)是可以由用户切换的开/关开关。设置控制元素的选中属性时,开关为“ on”。提交表单后,只有“启用”复选框控件才能成功。表单中的多个复选框可以共享相同的控件名称。因此,例如,复选框允许用户为同一属性选择多个值。INPUT元素用于创建复选框控件。

规范作者会说什么是正确的答案?请提供基于证据的答案。

路易Sam2020/03/20 13:37:46

好吧,我认为使用它并不重要(类似于禁用和只读),我个人使用checked =“ checked”,但是如果您尝试使用JavaScript操作它们,请使用true / false

神乐Pro2020/03/20 13:37:46

这是一个非常疯狂的小镇,使checked false的唯一方法是忽略任何值。使用Angular 1.x,您可以执行以下操作:

  <input type="radio" ng-checked="false">

如果您需要取消选中它,这会更加理智。

老丝猿路易2020/03/20 13:37:46

严格来说,您应该输入有意义的内容-根据此处的规范,最正确的版本是:

<input name=name id=id type=checkbox checked=checked>

对于HTML,您还可以使用空属性语法checked=""或什至简单地使用checked(对于更严格的XHTML,不支持)。

实际上,大多数浏览器实际上都支持引号之间的几乎任何值。将检查以下所有内容:

<input name=name id=id type=checkbox checked>
<input name=name id=id type=checkbox checked="">
<input name=name id=id type=checkbox checked="yes">
<input name=name id=id type=checkbox checked="blue">
<input name=name id=id type=checkbox checked="false">

并且只有以下内容将被取消选中:

<input name=name id=id type=checkbox>

另请参见上的类似问题disabled="disabled"

猴子村村2020/03/20 13:37:46
<input ... checked />
<input ... checked="checked" />

这些同样有效。在JavaScript中:

input.checked = true;
input.setAttribute("checked");
input.setAttribute("checked","checked");