HTMLcheckbox的checked属性的值是多less?

我们都知道如何在HTML中形成一个checkboxinput:

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

我不知道 – 检查checkbox的技术上正确的值是多less? 我已经看到了这些工作:

 <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"> 

答案不重要吗? 我看不出有什么证据可以从标准本身中标出正确的答案:

checkbox(和单选button)是可以由用户切换的开/关开关。 控制元素的checked属性设置时,开关处于“on”状态。 提交表单时,只有“打开”checkbox控件才能成功。 表单中的多个checkbox可能共享相同的控件名称。 因此,例如,checkbox允许用户为同一个属性select多个值。 INPUT元素用于创buildcheckbox控件。

规范作者会说什么是正确的答案? 请提供有据可依的答案。

严格地说,你应该把一些有意义的东西 – 根据这里的规范,最正确的版本是:

 <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"类似问题。

HTML5规范

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

禁用的内容属性是布尔属性。

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

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

如果该属性存在,则其值必须是空string,或者是该属性规范名称的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" /> 

缺less该属性是错误的唯一有效语法:

 <input /> 

build议

如果你关心写有效的XHTML,使用checked="checked" ,因为<input checked>是无效的XHTML(但是有效的HTML)和其他的select是不太可读的。 否则,只需使用<input checked>因为它更短。

 <input ... checked /> <input ... checked="checked" /> 

这些同样有效。 在JavaScript中:

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

你想这个我认为: checked='checked'

  1. 检查
  2. 检查=“”
  3. 检查=“选中”

    是等同的;


根据规格checkbox '—-ⓘchecked =“checked”或“”(空string)或空指定该元素表示一个选定的控件.—“

这是一个非常疯狂的城镇,唯一的方法,使检查错误是省略任何价值观。 使用Angular 1.x,你可以这样做:

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

如果你需要不加限制的话,这会更加理智。

那么,使用它,我不认为重要的事情(类似于禁用和只读),我个人使用checked =“checked”,但如果你试图操纵它们与JavaScript,你使用true / false