5

我正在尝试检测Enter Key。这是我的代码。

HTML

<input name="txtTest"  type="text" id="txtTest" onkeyup="CheckKey()"/>

Javascript

function CheckKey()
{
    var e = window.event;
    var code = e.keyCode ? e.keyCode : e.which;
    if(code === 13)
    {
      alert("You press Enter key.");
    }            
}

此代码在其他浏览器中有效,但在 Firefox 中无效,为什么?这是jsFiddle

请仅使用 javascript 提供答案。

4

3 回答 3

9

我相信您必须将event对象传递给处理程序:

<input name="txtTest"  type="text" id="txtTest" onkeyup="CheckKey(event)"/>
<!--                                            passes event object ^   -->
function CheckKey(e) //receives event object as parameter
{
   var code = e.keyCode ? e.keyCode : e.which;
   if(code === 13)
   {
       alert("You press Enter key.");
   }
}

小提琴

于 2013-04-03T21:21:57.547 回答
1

您应该将 JavaScript 代码与 HTML 分开。

尝试这样的事情 - 密钥应该适用于所有浏览器:

<input type="text" id="txtTest" onkeyup="CheckKey(e)"/>

function CheckKey(e) {
   var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
   if(key === 13)
   {
       alert("You press Enter key.");
   }
}

或者按照 jQuery 的建议(从 HTML 中分离 JavaScript 代码) - 使用event.which

   <!--HTML file e.g. index.html-->
   <input type="text" id="txtTest" />

    //JavaScript file e.g. script.js - you have to include that script in your HTML file
    $(function(){
      $('#txtTest').on('keyup', function(e){
          if(e.which === 13)
          {
            alert("You press Enter key.");
          }
      });
    });
于 2013-04-03T21:27:00.343 回答
0

使用event.key代替event.keyCode

function CheckKey(event) {
    if (event.key === "Enter") {
        // Do something
    }
};

Mozilla 文档

支持的浏览器

于 2017-09-05T21:33:25.947 回答