导致复选框忽略其选中值的原因

What would be causing a checkbox to ignore its checked value?

本文关键字:复选框      更新时间:2023-09-26

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

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

如果我显式地将self.checked更改为false,它现在就可以工作了。所以问题是为什么它被记录为"false",但"false"值实际上不是false

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

现在的问题是为什么地狱是自我检查一个字符串,但这是我自己要解决的问题。谢谢你帮我仔细想想。

尝试其他方法:

如果你碰巧在使用jQuery:

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

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

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

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

checkbox.checked=checkbox.defaultChecked=false;