如何在输入中按Tab键时阻止change
事件?
我已将e.preventDefault()
添加到keydown
事件处理程序
http://jsfiddle.net/949frs9j/1/
如果更改一个输入的值并按Tab键,则会触发change
事件...
<input id="tab1" type="text"> <input id="tab2" type="text">
$('input').keydown(function(e){
if(e.which == 9){
e.preventDefault();
if(e.target.id == 'tab1'){
$('#tab2').focus();
}
else{
$('#tab1').focus();
}
}
}).change(function(){
console.log('change');
});
答案 0 :(得分:2)
您无法阻止从change
事件处理程序触发keydown
事件。
当按下 Tab 按钮时,解决方法可以暂时删除change
事件处理程序,并在将焦点移动到下一个输入后再次重新绑定它。 Check this Fiddle
$('#tab1').off('change', myChangeHandler);
$('#tab2').focus();
$('#tab1').on('change', myChangeHandler);
另一种方法是使用flag
变量来帮助change
事件处理程序区分由于 Tab 而导致的change
点击。
答案 1 :(得分:0)
更改事件正在触发,因为元素的值已更改......这就是它的用途。
如果我们知道你为什么试图阻止改变事件的发射,那将会有所帮助。