在ENTER键上的Chrome中未生成按键事件?

时间:2013-01-25 08:58:14

标签: javascript jquery html google-chrome

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

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

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

有人可以就此提供意见吗?

4 个答案:

答案 0 :(得分:24)

跨浏览器方法:

$('#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/

答案 1 :(得分: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

答案 2 :(得分:0)

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

将按键更改为keydown:

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

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

});

答案 3 :(得分:-1)

Chrome似乎使用ENTER密钥,而不是13

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

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

    alert("enter pressed");
  }