16

我的应用程序需要用户输入,在文本框中输入值时,用户按 Enter(返回键),这会调用按钮 onclick 事件。这在 IE、FF 中运行良好,但在 Chrome 中运行良好。在 chrome 中输入时,不会生成按键事件这是我的代码片段

 $('#myDiv').keypress(function (e) {
    alert("Key  pressed");
    if (e.keyCode == $.ui.keyCode.ENTER) {

     alert("enter pressed");
    }
  });

任何人都可以对此提供意见吗?

4

4 回答 4

27

跨浏览器方法:

$('#myDiv').keydown( function(e) {
    var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
    if(key == 13) {
        e.preventDefault();
        alert("enter pressed");
    }
});

在 Chrome 24 上测试:http: //jsfiddle.net/PTauw/1/

于 2013-01-25T09:08:05.180 回答
6

keypress是检测输入了哪个字符的正确事件(尽管在这种特殊情况下,检测回车键keydown也可以正常工作)。但是,如何获取按键事件中键入的字符在浏览器之间是不一致的,因此 jQuery 对which属性进行了规范化。这就是你想要的:

$('#myDiv').keypress(function (e) {
    alert("Key pressed");
    if (e.which == $.ui.keyCode.ENTER) {
        alert("enter pressed");
    }
});

关键事件的权威参考:http: //unixpapa.com/js/key.html

于 2013-01-25T09:29:47.323 回答
0

此链接可能对您有帮助...
Api Jquery Key Press 或尝试使用此代码

将按键更改为按键:

$('#myDiv').keydown(function(e) {

   // your logic
   alert("Key  pressed");
   if (e.keyCode == $.ui.keyCode.ENTER) {
       alert("enter pressed");
   }

});
于 2013-01-25T09:12:21.287 回答
-1

Chrome 似乎正在使用ENTERkey 而不是13.

这适用于所有浏览器,包括CHROME.

  $('#myDiv').keydown(function(e) {
       if ((e.which == 13) || (e.which == keyCode.ENTER)) {

    alert("enter pressed");
  }
于 2014-04-02T13:44:34.210 回答