阻止选项卡keydown上的更改事件

时间:2014-12-18 23:22:25

标签: jquery

如何在输入中按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');
});

2 个答案:

答案 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)

更改事件正在触发,因为元素的值已更改......这就是它的用途。

如果我们知道你为什么试图阻止改变事件的发射,那将会有所帮助。