2013-06-12 55 views
5

此代碼不是爲我工作在Firefox(V21.0),但在IE(V9,V10)和鉻(V 27.0.1453.110米)的ReferenceError:未在mozila定義的事件的Firefox

方法CAL工作:

<input type="text" id="txt1" class="search-bar-input" 
         onkeyup="handleKeyPress('btn1');"> 

方法defenition:

function handleKeyPress(searchButtonId) { 
    if (event.keyCode === 13) { 
    alert(event.KeyCode); 
    } 
} 

錯誤消息:

ReferenceError: event is not defined 
if (event.keyCode === 13) { 

任何人有任何想法來解決這個問題?

回答

10

使用

<input type="text" id="txt1" class="search-bar-input" onkeyup="handleKeyPress(event, 'btn1');"> 

然後

function handleKeyPress(event) { 
    event = event || window.event //For IE 
    if (event.keyCode === 13) { 
     alert(event.keyCode); 
    } 
} 

演示:Fiddle

+0

在IE 9 –

+1

不工作@Arun_C_C這是因爲在IE中輸入的關鍵力量重新加載頁面,而不是嘗試的onkeyup onkeypress事件http://jsfiddle.net/arunpjohny/T9x9L/2/ –

+0

不適用於Firefox 50.1.0 –

2

您可以將btn1參數存儲爲data-*屬性,並使用不引人注意的Javascript分配事件處理程序(而不是內聯)。

也行alert(event.KeyCode);是錯的,KKeyPress應小寫k

Fiddle

HTML

<input type="text" id="txt1" class="search-bar-input" data-searchButtonId="btn1" /> 

的Javascript:

function handleKeyPress(event) { 
    if (event.keyCode === 13) { 
     console.log(event.keyCode + this.getAttribute("data-searchButtonId")); 
    } 
} 

window.onload = function(){ 
    document.getElementById("txt1").onkeyup = handleKeyPress; 
}