html - mvc - input checkbox样式
HTML复选框的checked属性的值是多少? (5)
- 检查
- 检查=“”
检查=“选中”
是等同的;
根据规格w3.org/TR/html-markup/input.checkbox.html '----ⓘchecked =“checked”或“”(空字符串)或空指定该元素表示选定的控件.---'
我们都知道如何在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元素用于创建复选框控件。
规格作者会说什么是正确的答案? 请提供基于证据的答案。
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");