HTML复选框的checked属性的正确值是什么?

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


#1楼

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

    是等价的; orm


根据spec 复选框 '----ⓘchecked =“checked”或“”(空字符串)或空指定元素表示选定的控件.---' htm


#2楼

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>由于它更短。


#3楼

这是一个很是疯狂的城镇,惟一的方法是检查错误是省略任何值。 使用Angular 1.x,您能够这样作:

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

若是你须要不加以控制,那就更加理智了。


#4楼

我认为这可能会有所帮助:


首先阅读Microsoft和W3.org的全部规范。
您会看到设置复选框的实际元素须要在ELEMENT PROPERTY上完成,而不是UI或属性。
$('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');


简而言之,对于选中的复选框,您须要:
初始DOM: <input type="checkbox" checked="checked">
元素属性: $('mycheckbox')[0].checked = "true";
UI: $('mycheckbox').val(true);$('mycheckbox').attr('checked', 'checked');


#5楼

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

相关文章
相关标签/搜索