jso*_*son 5 javascript checkbox events preventdefault
绑定到复选框输入的单击事件时,复选框已经在我的事件处理程序运行时切换,更奇怪的是,如果我指定了event.preventDefault(),则在我的事件处理程序运行后,切换会反转.
<input id="foo" type="checkbox"/>
function clicked(evt) {
alert(document.getElementById('foo').checked);
evt.preventDefault();
}
document.getElementById('foo').addEventListener('click',clicked);
Run Code Online (Sandbox Code Playgroud)
[在chrome和firefox中测试]
警报将响应"true"(或复选框预先单击的相反状态).关闭警报后,复选框会切换回来.
所以,我猜问题是,
什么是实际的默认事件被阻止?假设我的事件处理程序应该在状态更改之前运行,我错了吗?有没有办法合法拦截复选框点击?
为什么世界上的preventDefault导致重新切换复选框?
被阻止实际的默认事件是该click事件.误解可能是因为你所想的事件作为烧成后的实际点击已完全处理(即复选框已被切换),而现实中的事件模型规定,处理程序便会启动,同时正在处理该事件.
如果它有帮助,我发现另一个有用的解释它是如何工作的模型是数据库事务模型:将事件处理程序视为作为事务的一部分被调用,其中复选框已被切换.