ReferenceError:事件未在mozilla firefox中定义

时间:2013-06-12 06:55:41

标签: javascript firefox javascript-events

此代码在firefox(V21.0)中不起作用,但适用于IE(V9,V10)和Chrome(V 27.0.1453.110 m)

方法cal:

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

方法防御:

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

错误讯息:

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

任何人都有任何想法来解决这个问题?

2 个答案:

答案 0 :(得分:11)

使用

<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

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