0

我正在尝试将 html 复选框的checked值初始化为 false。但是,当我尝试设置它然后立即记录它的值时,它仍然显示为 true,并且复选框保持选中状态。

什么可能导致checked属性忽略通过 JavaScript 显式设置其值?

console.log( "setting", self.checkbox.testid, "to", self.checked );
self.checkbox.checked = self.checked;
console.log( self.checkbox.testid + " checked: ", self.checkbox.checked ); // still true
4

3 回答 3

1

尝试其他方法:

如果你碰巧在使用 jQuery:

$('#myCheckbox').removeAttr('checked');

或者如果没有,请尝试在复选框上设置一个 ID 并确保您正在处理正确的元素:

document.getElementById('myCheckbox').checked = false;
于 2012-08-23T18:28:03.697 回答
1

啊哈!问题实际上不在于checked复选框的属性,而在于我试图将其设置为的值。

如果我明确更改self.checked为,它现在可以工作。false所以问题是为什么它被记录为“假”但“假”值实际上不是false

...

确实是的,当我记录typeof self.checked它实际上是一个值为“false”的字符串!当然,字符串“false”实际上是真的。多么骗人!

现在的问题是为什么 heck 是 self.checked 一个字符串,但这是我自己要解决的问题。感谢您帮助我通过人们思考。

于 2012-08-23T18:31:04.563 回答
0

为了以编程方式跨浏览器更改复选框的值,您需要执行以下操作:

checkbox.checked = checkbox.defaultChecked = false;
于 2012-08-23T18:36:44.537 回答