最近一个奇怪的错误让我很头疼,我已经能够将它简化为最简单的形式。看到这个小提琴:http: //jsfiddle.net/PgAAb/
<input type="text" id="foo" placeholder="Change me!"><br>
<input type="text" id="bar" size="30" placeholder="Dummy control to switch focus">
$('#foo').change(function() {
console.log('Changed!');
$('#bar').focus();
});
基本上,当您更改第一个文本框并使用鼠标单击文档中的其他位置时,更改事件会像往常一样触发。但是,如果您更改值并按回车键触发更改,则事件会触发两次。
我注意到该错误仅适用于 Chrome。Firefox 不会触发两次事件,IE 甚至不支持回车键触发输入更改。
我猜这是因为事件回调中的焦点切换而发生的。有没有办法解决?