如何在Firefox中检测Enter键?

时间:2013-04-03 21:19:45

标签: javascript firefox

我正在尝试检测输入密钥。这是我的代码。

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提供答案。

3 个答案:

答案 0 :(得分: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.");
   }
}

Fiddle

答案 1 :(得分: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.");
          }
      });
    });

答案 2 :(得分:0)

使用event.key代替event.keyCode

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

Mozilla Docs

Supported Browsers