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

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

看起来我需要使用keypress()方法。

该命令是否存在浏览器问题?比如,是否存在我应该知道的浏览器兼容性问题?


当前回答

我发现这更适合跨浏览器:

$(document).keypress(function(event) {
    var keycode = event.keyCode || event.which;
    if(keycode == '13') {
        alert('You pressed a "enter" key in somewhere');    
    }
});

其他回答

Andrea答案的一个小扩展使helper方法在您可能还想捕获修改的回车(即Ctrl+enter或Shift+enter)时更有用。例如,此变体允许如下绑定:

$('textarea').enterKey(function() {$(this).closest('form').submit(); }, 'ctrl')

当用户按下Ctrl+Enter并将焦点放在表单的文本区域时提交表单。

$.fn.enterKey = function (fnc, mod) {
    return this.each(function () {
        $(this).keypress(function (ev) {
            var keycode = (ev.keyCode ? ev.keyCode : ev.which);
            if ((keycode == '13' || keycode == '10') && (!mod || ev[mod + 'Key'])) {
                fnc.call(this, ev);
            }
        })
    })
}

(另请参见*Ctrl+Enter在TEXTAREA中使用jQuery)

我发现这更适合跨浏览器:

$(document).keypress(function(event) {
    var keycode = event.keyCode || event.which;
    if(keycode == '13') {
        alert('You pressed a "enter" key in somewhere');    
    }
});

您可以使用jQuery“keydown”事件处理程序执行此操作:

$("#start").on("keydown", function(event) {
  if(event.which == 13)
    alert("Entered!");
});
$(document).keyup(function(e) {
    if(e.key === 'Enter') {
        //Do the stuff
    }
});

我想出了这个解决方案:

$(document).ready(function(){

  $('#loginforms').keypress(function(e) {
    if (e.which == 13) {
    //e.preventDefault();
    alert('login pressed');
    }
  });

 $('#signupforms').keypress(function(e) {
    if (e.which == 13) {
      //e.preventDefault();
      alert('register');
    }
  });
});