【发布时间】:2021-09-12 22:57:54
【问题描述】:
我正在尝试在click 事件中记录单选元素的checked 属性。但它返回错误的值。
const radio = document.querySelector('input[type=radio]')
radio.addEventListener('click', (ev) => {
ev.preventDefault();
console.log(ev.target.checked);
})
<p class="rInput">
<input type="radio" name="R" id="ID">
<label for="ID">The label</label>
</p>
当点击收音机时,它应该记录检查状态,但它总是记录true。
我对此的解决方案是添加一个 0 毫秒的 timeOut,它起作用了
const radio = document.querySelector('input[type=radio]')
radio.addEventListener('click', (ev) => {
ev.preventDefault();
setTimeout(() => {
console.log(ev.target.checked);
}, 0);
})
<p class="rInput">
<input type="radio" id="ID">
<label for="ID">The label</label>
</p>
但是问题出在哪里,为什么会这样?有更好的解决方案吗?
【问题讨论】:
-
单选按钮上只有两个事件可用,即
change和input。你为什么首先在radio按钮上使用click事件? READ -
如果选中了无线电输入,它将始终为真。您是否有其他无线电输入,或者您的意思是使用复选框?
-
@pilchard 它一开始是未经检查的收音机,我使用
preventDefault来防止它更改为checked,因此我可以记录false作为结果。 -
@Andy 我阻止它被点击检查
标签: javascript html radio-button