什么会导致复选框忽略其检查值?

时间:2012-08-23 18:17:13

标签: javascript html checkbox

我正在尝试将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

3 个答案:

答案 0 :(得分:1)

尝试其他方法:

如果你碰巧使用jQuery:

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

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

document.getElementById('myCheckbox').checked = false;

答案 1 :(得分:1)

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

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

...

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

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

答案 2 :(得分:0)

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

checkbox.checked = checkbox.defaultChecked = false;