在 HTML5中选中和取消选中复选框的正确方法是什么?

看了 HTML 规范,但是没有头绪: http://www.w3.org/TR/html5/the-input-element.html#attr-input-checked

在 HTML 中选中复选框的正确方法是什么(不是动态的) ?

checked="true"
checked="checked"

取消检查复选框的正确方法是什么?

<input type="checkbox" /> with no checked attribute
checked="false"
checked="none"

在哪里选中 HTML 规范来选中/取消选中复选框?

292165 次浏览

<input type="checkbox" checked />

HTML5不要求属性具有值

<form name="myForm" method="post">
<p>Activity</p>
skiing:  <input type="checkbox" name="activity" value="skiing"  checked="yes" /><br />
skating: <input type="checkbox" name="activity" value="skating" /><br />
running: <input type="checkbox" name="activity" value="running" /><br />
hiking:  <input type="checkbox" name="activity" value="hiking"  checked="yes" />
</form>

你可以在 W3学校上参考这个页面,但基本上你可以使用以下任何一个:

<input checked>
<input checked="checked">
<input checked="">

检查状态

老式浏览器可能需要:

<input type="checkbox" checked="checked" />

但如今,只需要:

<input type="checkbox" checked />

未检查状态

删除选中的属性,比如:

<input type="checkbox" />

参考资料: http://www.w3.org/TR/html-markup/input.checkbox.html#input.checkbox.attrs.checked

根据 HTML5草案,checked属性是“ 布尔型属性”,“元素上布尔属性的存在表示真值,而该属性的缺失表示假值。”重要的是属性的名称,这就足够了。因此,要使复选框最初选中,您可以使用

<input type=checkbox checked>

默认情况下,在没有 checked属性的情况下,一个复选框最初是未选中的:

<input type=checkbox>

保持这种方式可以使它们保持简单,但是如果需要遵循 XML 语法(即在 XHTML 线性化中使用 HTML5) ,则不能单独使用属性名。然后允许的(根据 HTML5草案)值是空字符串和字符串 checked,不区分大小写。例如:

<input type="checkbox" checked="checked" />

在 jQuery 中:

选中复选框:

$("#checkboxid").attr("checked","checked");

取消选中复选框:

$("#checkboxid").removeAttr("checked");

其他的答案提示了解决方案,并指向文档,经过进一步的挖掘,您将得到这个答案。Jukka K. Korpela 有理由认为这是正确答案,基本上我是按照他的链接,然后查找 jQuery 文档得到这个结果的。我只是觉得我可以帮那些找到这篇文章的未来人省去那些额外的步骤。

在 jQuery 中对 Robert 答案 http://jsfiddle.net/ak9Sb/的补充答案

当获取/设置复选框状态时,可能会遇到以下现象:

.trigger("click");

选中未选中的复选框,但不添加选中的属性。 如果使用触发器,请不要尝试获取具有“勾选”属性的状态。

.attr("checked", "");

不要取消复选框..。

您可以在父窗体上使用 autocomplete = “ off”,因此如果重新加载页面,将不会自动选中复选框

我不完全确定为什么之前没有人提到这一点,但对我来说,以下方法是有效的:

设置为 checked:

<input type="checkbox" checked>

设置为 unchecked:

<input type="checkbox" unchecked>

(我遇到的问题是在重新加载页面之后仍然选中了复选框。使用 unchecked解决了我的问题,所以它可能对其他人有用。)