2013-06-12 3 views
5

Этот код не работает для меня в Firefox (V21.0), но работает в IE (V9, V10) и хром (V 27.0.1453.110 м)ReferenceError: событие не определено в Mozila Firefox

метод кал :

<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); неверна, K в KeyPress должен быть в нижнем регистре 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; 
}