【问题标题】:keypress event not generated in Chrome on ENTER Key?ENTER键上没有在Chrome中生成按键事件?
【发布时间】:2013-01-09 05:11:49
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你能展示一下它的 HTML 吗? #myDiv 听起来您没有直接将事件绑定到输入字段。
  • 如果 #myDiv 是一个输入字段,它在 chrome 中工作,我刚刚在这里测试过 jsfiddle.net/PTauw
  • 我用 keydown 成功了
  • 您需要提出一个显示错误的示例。正如 jerome 的 jsfiddle 所示,您在问题中的内容在 Chrome 上运行良好。

标签: javascript jquery html google-chrome


【解决方案1】:

跨浏览器方法:

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

【讨论】:

  • @techfoobar keydown 在这种特殊情况下是可以的,但并不比 keypress 更好,它同样可以正常工作。不需要复杂的 charCode / keyCode 东西,顺便说一句:keyCode 适用于所有主要浏览器的 keydown 和 keyup。
  • @TimDown - Keypress 不可靠地用于 ENTER (13) 键(我认为实际上对于任何非打印字符)。不得不求助于使用 keydown 进行跨浏览器功能(最近几个项目的经验)
  • @techfoobar:我很确定对于 Enter 键的按键是 100% 可靠的,无论如何可打印的。
  • @TimDown - 啊,是的,我的意思是我不得不使用 keydown 的箭头键。我的错。
  • 当您尝试检测选项卡时,Keypress 不适用于 chrome。您必须使用 keydown 来检测选项卡。
【解决方案2】:

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

将按键更改为按键:

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

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

});

【讨论】:

    【解决方案3】:

    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

    【讨论】:

      【解决方案4】:

      Chrome 似乎正在使用 ENTER 键而不是 13

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

        $('#myDiv').keydown(function(e) {
             if ((e.which == 13) || (e.which == keyCode.ENTER)) {
      
          alert("enter pressed");
        }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多