当绑定到复选框输入的单击事件时,复选框在我的事件处理程序运行时已经切换,更奇怪的是,如果我指定 event.preventDefault(); 在我的事件处理程序运行后切换会反转。
<input id="foo" type="checkbox"/>
function clicked(evt) {
alert(document.getElementById('foo').checked);
evt.preventDefault();
}
document.getElementById('foo').addEventListener('click',clicked);
[在 chrome 和 firefox 中测试]
警报将响应“真”(或复选框预单击的相反状态)。关闭警报后,复选框会切换回来。
所以,我想问题是,
被阻止的实际默认事件是什么?假设我的事件处理程序应该在状态更改之前运行,我错了吗?有没有办法合法地拦截复选框点击?
为什么在世界上是 preventDefault 导致重新切换复选框?