html - mvc - input checkbox样式




HTML复选框的checked属性的值是多少? (5)

我们都知道如何在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">

答案是否无关紧要? 我从spec本身看到没有证据表明答案标记为正确:

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

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


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

    是等同的;

根据规格w3.org/TR/html-markup/input.checkbox.html '----ⓘchecked =“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 />

建议

如果您关心编写有效的XHTML,请使用checked="checked" ,因为<input checked>无效XHTML(但有效的HTML)和其他替代方法的可读性较差。 否则,只需使用<input checked>因为它更短。


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


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

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

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


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

这些同样有效。 在JavaScript中:

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




html-input