如何使用jQuery检测键盘上的Enter键?

IT技术 javascript jquery keyboard-events enter jquery-events
2021-02-02 15:14:15

我想检测用户是否Enter使用 jQuery按下了按钮

这怎么可能?它需要插件吗?

编辑:看起来我需要使用该keypress()方法。

我想知道是否有人知道该命令是否存在浏览器问题 - 比如我应该了解任何浏览器兼容性问题吗?

6个回答

jQuery 的全部意义在于您不必担心浏览器差异。我很确定你可以安全地enter在所有浏览器中使用13。因此,考虑到这一点,您可以这样做:

$(document).on('keypress',function(e) {
    if(e.which == 13) {
        alert('You pressed enter!');
    }
});
e.keyCode 不是 100% 跨浏览器。使用 e.which 代替,如下所示
2021-03-13 15:14:15
由于事件传播(即,警报被抛出两次),我对给定函数进行了多次执行。要阻止这种情况,请在函数末尾添加一个 e.stopPropagation()
2021-03-15 15:14:15
$(document).on('keypress', function(e) {
2021-03-19 15:14:15
我正在链接到这个,因为我读了这个,并且对为什么 keypress 不能与 IE 一起工作感到头疼。(它不会绑定到$(window)IE 下)quirksmode.org/dom/events/keys.html
2021-04-05 15:14:15
来自 jQuery 文档“event.which 属性规范化 event.keyCode 和 event.charCode。建议观看 event.which 进行键盘输入。”
2021-04-05 15:14:15

我编写了一个小插件,以便更轻松地绑定“按下回车键”事件:

$.fn.enterKey = function (fnc) {
    return this.each(function () {
        $(this).keypress(function (ev) {
            var keycode = (ev.keyCode ? ev.keyCode : ev.which);
            if (keycode == '13') {
                fnc.call(this, ev);
            }
        })
    })
}

用法:

$("#input").enterKey(function () {
    alert('Enter!');
})
这对我不起作用(我上场#input<input>
2021-03-18 15:14:15
@mplungjan 不确定“委托”是什么意思
2021-03-26 15:14:15
$("#input").on("someevent","someselector",function () {})
2021-04-05 15:14:15
如果#input 元素是动态的呢?
2021-04-10 15:14:15

我无法得到通过@Paolo Bergantino发布工作的代码,但是当我把它改成$(document)e.which,而不是e.keyCode后来我发现它完美地工作。

$(document).keypress(function(e) {
    if(e.which == 13) {
        alert('You pressed enter!');
    }
});

链接到 JS Bin 上的示例

来自 jQuery 文档“event.which 属性规范化 event.keyCode 和 event.charCode。建议观看 event.which 进行键盘输入。”
2021-03-31 15:14:15
哪个版本的IE?在 IE7 上对我来说很好用。
2021-04-04 15:14:15
对我来说 e.which 不适用于 IE。对其他人有用吗?
2021-04-07 15:14:15

我发现这更跨浏览器兼容:

$(document).keypress(function(event) {
    var keycode = event.keyCode || event.which;
    if(keycode == '13') {
        alert('You pressed a "enter" key in somewhere');    
    }
});
您的三元 IF 可以缩短为: var keycode = event.keyCode || 事件。哪个;
2021-03-20 15:14:15
对于表单内的按钮,我将这一行放在警报(或操作)之前: event.preventDefault(); 它阻止表单提交。
2021-03-28 15:14:15

您可以使用 jquery 'keydown' 事件句柄执行此操作

   $( "#start" ).on( "keydown", function(event) {
      if(event.which == 13) 
         alert("Entered!");
    });
我使用这个答案是因为我需要检查特定的输入 ID。谢谢
2021-03-22 15:14:15
由于它是一个按键,我很怀疑如果用户按住 Enter 键,这将多次触发。通常我更喜欢keyup。但对于某些用例,这可能是必需的。只是我的观点。
2021-03-24 15:14:15