复选框设置为checked = false不起作用

时间:2014-07-01 15:52:28

标签: javascript jquery checkbox

我使用checked="false"生成HTML输入,但是复选框显示已选中。

我在javascript控制台中执行了以下操作,并且无法弄清楚最新情况。使用.prop()将值设置为false后生成的HTML看起来相同,除非现在未在表单上选中复选框。

> $(':input[checked]').prop('checked');
< true
> $(':input[checked]')
< [
<input type=​"checkbox" class=​"caseVal" checked=​"false">​
]
> $(':input[checked]').prop('checked',false);
< [
<input type=​"checkbox" class=​"caseVal" checked=​"false">​
]

我的印象是我应该设置checked="checked"或者根本不包括已检查的属性,如果它的错误是最佳做法?无论哪种方式,我都想知道上述代码中发生了什么。

2 个答案:

答案 0 :(得分:28)

不要放checked="false"

你只把checked =“checked”用于有效的XHTML,否则你会做

<input type="checkbox" checked>

浏览器不关心为checked属性分配了什么值,只要它在复选框输入标记中看到checked,就会将其标记为已选中。

答案 1 :(得分:-1)

在这种情况下如何取消选中,我的代码示例为:(见下文)

if(previousHighlightedCheckbox!=null) {
    console.log(sent.id, previousHighlightedCheckbox); // current checkbox and previous check box values are different.
    document.getElementById(previousHighlightedCheckbox).checked = false; // still this does not uncheck previous one
  }