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

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

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

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


当前回答

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).keydown(function (event) {
      //proper indentiation of keycode and which to be equal to 13.
    if ( (event.keyCode || event.which) === 13) {
        // Cancel the default action, if needed
        event.preventDefault();
        //call function, trigger events and everything tou want to dd . ex : Trigger the button element with a click
        $("#btnsearch").trigger('click');
    }
});

我想出了这个解决方案:

$(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');
    }
  });
});
$(function(){
  $('.modal-content').keypress(function(e){
    debugger
     var id = this.children[2].children[0].id;
       if(e.which == 13) {
         e.preventDefault();
         $("#"+id).click();
       }
   })
});

尝试此操作以检测按下的Enter键。

$(document).on("keypress", function(e){
    if(e.which == 13){
        alert("You've pressed the enter key!");
    }
});

查看键盘上的演示@detect回车键

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