繁体   English   中英

即使运行了 preventDefault ,也会在单击事件上检查单选按钮

[英]Radio button is checked on click event even though preventDefault is ran

 thing.addEventListener('click', click) function click(e) { e.preventDefault() console.log(e.target.checked); }
 <input id="thing" type="radio" name="gender">

即使运行了 preventDefault 并且未选中单选按钮,为什么e.target.checked == true

当您调用 preventDefault 时,单选按钮已被选中。 preventDefault 只是撤消此操作。 如果您在控制台日志上设置一个短超时,您可以看到这一点。

 thing.addEventListener('click', click) function click(e) { e.preventDefault(); setTimeout(function(){ console.log(e.target.checked); }, 10); }
 <input id="thing" type="radio" name="gender">

因为preventDefault()从触发事件函数的标记中删除了值。 但是当after preventDefault()被触发后, e.target.checkedfalse ,如下所示。 所以最后 e.target.checked 是假的。

 thing.addEventListener('click', click) function click(e) { e.preventDefault() console.log(e.target.checked); setTimeout(()=> console.log(e.target.checked), 100); }
 <input id="thing" type="radio" name="gender">

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM