Javascript 操作后停止chrome中的tab键事件传播

Javascript 操作后停止chrome中的tab键事件传播,javascript,tabs,textarea,keycode,Javascript,Tabs,Textarea,Keycode,在Chrome中,我试图截获一个tab键,停止所有正常的tab键行为,并执行我自己的操作 如果这就是我所做的,我可以停止默认行为。但是,如果执行某个操作,然后尝试停止默认行为,则会阻止焦点转移到下一个输入,但会在当前输入中放置一个tabspace 如果问题仍然不清楚,请参阅 以下是我尝试过的(注意,下面所有的工作都是为了在firefox中完成我需要的工作,而不是在chrome中) $('.next tab').keydown(函数(e){ var代码=(e.keyCode?e.keyCode:

在Chrome中,我试图截获一个tab键,停止所有正常的tab键行为,并执行我自己的操作

如果这就是我所做的,我可以停止默认行为。但是,如果执行某个操作,然后尝试停止默认行为,则会阻止焦点转移到下一个输入,但会在当前输入中放置一个tabspace

如果问题仍然不清楚,请参阅

以下是我尝试过的(注意,下面所有的工作都是为了在firefox中完成我需要的工作,而不是在chrome中)


$('.next tab').keydown(函数(e){
var代码=(e.keyCode?e.keyCode:e.which);
控制台日志(代码);
如果(代码==0 | |代码==9){
e、 预防默认值();
e、 停止传播();
}
//这只会阻止tab keypress事件的传播,并按预期工作:
});
$('.next-tab2').keydown(函数(e){
var代码=(e.keyCode?e.keyCode:e.which);
控制台日志(代码);
如果(代码==0 | |代码==9){
警报(“测试”);
e、 预防默认值();
e、 停止传播();
}
});
$('.next-tab3').keydown(函数(e){
var代码=(e.keyCode?e.keyCode:e.which);
控制台日志(代码);
如果(代码==0 | |代码==9){
e、 预防默认值();
e、 停止传播();
警报(“测试”);
//将警报放在后面没有帮助
}
});

如何阻止将选项卡空间添加到输入?

只有当操作包括
警报()
确认()
提示()
时,才会出现问题。这可能与它们重新进入事件循环的方式有关。因此,从代码中删除这些调试语句,它应该会工作。

问题似乎是特定于
alert()
。我把它改为
console.log()
,问题就消失了。
prompt()
confirm()
也有同样的症状。我想这是因为这些显示了一个对话框,它把焦点从元素上偷走了。啊,你完全正确,我没听清楚。提出一个答案,我会接受的,谢谢!这不是答案,只是对问题的澄清。除了不调用这些函数之外,我仍然不知道如何防止这种情况发生。对我来说,这是一种解决方案,我只是在调试真实代码以便于引用时向数组发出警报。因为我真的不需要显示警报,所以删除它修复了我的问题。如果有人稍后提出了一个允许警报的解决方案,我会将其更改为他们的答案。
<input type="text" class="next-tab"/>
<input type="text" class="next-tab2"/>
<input type="text" class="next-tab3"/>

$('.next-tab').keydown(function(e){
        var code = (e.keyCode ? e.keyCode : e.which);
        console.log(code);
        if (code == 0 || code == 9){
            e.preventDefault();
            e.stopPropagation();
        }
    // this only blocks the propagation of the tab keypress event, and works as expected:
    });

$('.next-tab2').keydown(function(e){
        var code = (e.keyCode ? e.keyCode : e.which);
        console.log(code);
        if (code == 0 || code == 9){
            alert("test");
            e.preventDefault();
            e.stopPropagation();

        }
});
$('.next-tab3').keydown(function(e){
        var code = (e.keyCode ? e.keyCode : e.which);
        console.log(code);
        if (code == 0 || code == 9){
            e.preventDefault();
            e.stopPropagation();
            alert("test");
            //putting the alert after doesnt help

        }
});