【发布时间】:2017-10-18 23:06:45
【问题描述】:
我需要一个复选框列表,条件是必须至少选中其中一个。
下面的代码会产生这种效果。
document.querySelector('div').addEventListener('click', function(evt){
if( this.querySelectorAll('input:checked').length == 0 )
evt.preventDefault() ;
}) ;
<div>
<input type=checkbox checked>
<input type=checkbox>
<input type=checkbox>
</div>
没关系,但是,我不明白为什么这段代码还能工作。
首先,只有在我检查了没有选中复选框的条件后,我才会对点击事件执行.preventDefault()。所以此时取消点击事件应该没什么区别。
其次,即使您尝试使用键盘检查复选框,代码仍然有效,这很奇怪,因为我只是取消了点击事件。
请解释为什么代码会这样工作。
【问题讨论】:
-
有趣,.. 我假设
preventDefault有一种回滚逻辑。
标签: javascript html checkbox preventdefault dom-events