Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何获取输入元素上的键选项卡事件?_Jquery_Keyup_Keystroke - Fatal编程技术网

Jquery 如何获取输入元素上的键选项卡事件?

Jquery 如何获取输入元素上的键选项卡事件?,jquery,keyup,keystroke,Jquery,Keyup,Keystroke,我尝试在输入字段中按下返回键时触发一个按钮。这很有效。但如果我点击tab键,则不会触发任何内容,因为tab键事件未被捕获 以下是我的JQ代码片段,例如: $("input[name=input]").on("keypress, keydown, keyup", function(e) { var code = e.keyCode || e.which; if ( code == 13 || code == 9 ) { $("input[name=btn]").trigger("

我尝试在输入字段中按下返回键时触发一个按钮。这很有效。但如果我点击tab键,则不会触发任何内容,因为tab键事件未被捕获

以下是我的JQ代码片段,例如:

$("input[name=input]").on("keypress, keydown, keyup", function(e) {
  var code = e.keyCode || e.which;
  if ( code == 13 || code == 9 ) {
    $("input[name=btn]").trigger("click");
  }
});
我不知道如何使tab键笔划像返回键笔划一样工作。

  • 使用
    Event.preventDefault()
    防止浏览器在按Tab键时切换焦点
  • 仅侦听
    “keydown”
    事件
  • 改用
JavaScript的和keyCode都不推荐使用,从历史上看,它们都是一团糟。
即使jQuery使用
jQueryEvent.which
Event.keyCode
Event.which
交叉浏览器进行规范化,我认为我们应该放弃这两个并使用更人性化的
Event.key
。什么更有意义,
9
'Tab'
<代码>13或
输入“
<代码>42或。。。42是多少

$('input[name=input]')。打开('keydown',函数(evt){
如果(evt.key=='Tab'| | evt.key==='Enter'){
evt.preventDefault();
$('input[name=btn]')。触发器('click');
}
});
  • 仅绑定
    keydown
    事件
  • 选项卡键上的
    返回false
    预防默认值
    ,这样焦点就不会丢失
  • 演示:


    e.preventDefault()
    返回false
    。为什么?“嗯,它也会停止传播
    返回false就足够了,但我喜欢它在那里,特别是在这种情况下(它用于提交按钮,而函数的其余部分必须停止)。
    preventDefault
    只是为了代码清晰,谢谢。这个很好用。唯一的问题是,我必须将焦点更改功能应用于通过单击按钮触发的功能。如果我不这样做,用户将无法使用选项卡更改字段。如果您想了解有关
    prevent default
    return false
    的更多信息:“返回false就足够了”您不理解
    return false。
    $("input[name=input]").on("keydown", function(e) {
        var code = e.keyCode || e.which;
    
        if ( code == 13 || code == 9 ) {
            e.preventDefault();
            $("input[name=btn]").trigger("click");
            return false;
        }
    });