咱们都知道如何在HTML中造成一个复选框输入: html
<input name="checkbox_name" id="checkbox_id" type="checkbox">
我不知道 - 复选复选框的技术正确值是什么? 我看到这些都有效: html5
<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">
答案是可有可无的吗? 我看到的答案,没有证据标记为正确这里从规范自己: ide
复选框(和单选按钮)是可由用户切换的开/关开关。 当设置了控制元素的checked属性时,开关处于“打开”状态。 提交表单时,只有“on”复选框控件才能成功。 表单中的多个复选框能够共享相同的控件名称。 所以,例如,复选框容许用户为同一属性选择多个值。 INPUT元素用于建立复选框控件。 spa
规范做者会说什么是正确答案? 请提供基于证据的答案。 .net
检查=“选中” code
是等价的; orm
根据spec 复选框 '----ⓘchecked =“checked”或“”(空字符串)或空指定元素表示选定的控件.---' htm
HTML5规范 : ip
http://www.w3.org/TR/html5/forms.html#attr-input-checked : 字符串
disabled content属性是布尔属性。
http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes :
元素上存在布尔属性表示真值,缺乏属性表示false值。
若是该属性存在,则其值必须是空字符串,或者是属性的规范名称的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>
由于它更短。
这是一个很是疯狂的城镇,惟一的方法是检查错误是省略任何值。 使用Angular 1.x,您能够这样作:
<input type="radio" ng-checked="false">
若是你须要不加以控制,那就更加理智了。
我认为这可能会有所帮助:
$('mycheckbox')[0].checked
其次,你须要知道checked属性RETURNS一个字符串“true”,“false”
为何这很重要? 由于您须要使用正确的类型。 字符串,不是布尔值。 解析复选框时这也很重要。
$('mycheckbox')[0].checked = "true"
if($('mycheckbox')[0].checked === "true"){ //do something }
您还须要意识到“已检查”ATTRIBUTE最初用于设置复选框的值。 一旦元素呈现给DOM,这不会作太多。 在网页加载并最初解析时,将其设置为有效。
我将使用IE的首选项: <input type="checkbox" checked="checked"/>
最后,复选框混淆的主要方面是复选框UI元素与元素的属性值不一样。 它们不直接相关。 若是你在.net中工做,你会发现用户“检查”一个复选框永远不会反映传递给控制器的实际bool值。 要设置UI,我同时使用$('mycheckbox').val(true);
和$('mycheckbox').attr('checked', 'checked');
<input type="checkbox" checked="checked">
$('mycheckbox')[0].checked = "true";
$('mycheckbox').val(true);
和
$('mycheckbox').attr('checked', 'checked');
你想要这个我认为: checked='checked'