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

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

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

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


当前回答

我想出了这个解决方案:

$(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');
    }
  });
});

其他回答

由于任何官方规范都没有涵盖按键事件,因此在使用它时遇到的实际行为可能会因浏览器、浏览器版本和平台而异。

$(文档).keydown(函数(事件){if(event.keyCode | | event.which===13){//如果需要,取消默认操作event.prpreventDefault();//调用函数、触发事件和您想做的一切。示例:单击按钮触发按钮元素$(“#btn”).触发器('click');}})<script src=“https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js“></script><button id=“btn”onclick=“console.log('button Pressed.')”></button>

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

$("#start").on("keydown", function(event) {
  if(event.which == 13)
    alert("Entered!");
});

我认为最简单的方法是使用普通JavaScript:

document.onkeyup = function(event) {
   if (event.key === 13){
     alert("Enter was pressed");
   }
}

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)

有一个keypress()事件方法。Enter键的ASCII编号为13,不取决于使用的浏览器。