复选框设置为未选中状态但不起作用。

21

我正在生成一个HTML输入框,并使用checked="false",但是复选框显示为已选中。

我在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"或者根本不包括checked属性,这是最佳实践吗?无论哪种方式,我都想知道上述代码的情况。


勾选为真,不勾选为假 <input type="checkbox" checked="checked" /> <input type="checkbox" /> - user1850421
你的例子对我有效 http://jsfiddle.net/j08691/qSSa8/。你只是看控制台输出还是实际的DOM渲染?你尝试过`.removeAttr()`吗? - j08691
如果您想让它未选中,则为:<input type=​"checkbox" class=​"caseVal">​,如果选中,则为:<input type=​"checkbox" class=​"caseVal" checked=​"checked">​ - Ehsan Sajjad
1
请查看此链接 prop() vs attr() - Shaunak D
3
prop() 不会更新 HTML,只会更新 DOM。如果您打算在之后检查 HTML,请使用 attr()removeAttr() - user1850421
3个回答

38

不要写 checked="false"

只有对于有效的XHTML,才使用 checked="checked",否则可以省略

<input type="checkbox" checked>

无论为checked属性分配什么值,浏览器都不在意,只要看到复选框输入标签中的checked就会被标记为已选中状态。


好的,谢谢。一旦系统允许,我会立即接受它。 - turbo2oh

0

$(document).ready(function () { $(e).prop("checked", false);}

// “e”指的是按钮元素


-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
  } 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接