2013-04-03 75 views
3

我在嘗試檢測輸入密鑰。這是我的代碼。如何檢測Firefox中的Enter鍵?

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

+0

'window.event'僅在IE可用。你必須在'inline'調用中傳遞'event' - 這樣所有的瀏覽器都可以在回調中使用它。 – Ian 2013-04-03 21:30:13

+0

@Ily Nicely指出。 '=]'我也認爲'window.event'是IE專有的,但顯然Chrome採用了許多非標準的微軟專有的東西來保證兼容性。 – 2013-04-03 21:32:13

回答

8

我相信你已經到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

+0

我是jsFiddle的新手。請告訴我如何在jsFiddle中只選擇javascript。 – user1390378 2013-04-03 21:38:26

+0

@ user1390378對不起,不完全確定你的意思。你的意思是頁面左上角的「No-Library(Pure JS)」選項?或者,如果你的意思是隻查看JS面板,那麼我認爲這是不可能的。 – 2013-04-03 21:41:50

+0

謝謝。完美的作品。 :) – freeworlder 2014-07-13 21:58:42

1

你應該從HTML代碼中分離JavaScript代碼。

嘗試這樣的事情 - 關鍵應該在所有的瀏覽器:

<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."); 
      } 
     }); 
    }); 
+0

提供一個基於原始問題的答案:)我沒有看到任何正在使用的jQuery。至少使用jQuery提供的東西--e.which - 當jQuery規範化它時,不需要檢查e.charCode' /'e.keyCode'。如果你想提供一個不顯眼的Javascript方法,我現在看到'addEventListener' /'attachEvent' – Ian 2013-04-03 21:28:17

+0

。 Hes jsFiddle包含了jQuery。 – kayz1 2013-04-03 21:30:27

+0

嗯好點,沒有看到。我想知道OP是否意識到它。無論如何,'e.which'仍然是你應該使用'key' – Ian 2013-04-03 21:31:42