Firefox onkeypress事件未传入事件参数

时间:2011-10-05 15:13:36

标签: javascript firefox javascript-events onkeypress

我有以下textarea HTML标记,我将运行时插入到DOM中(我只显示了它插入后的样子)并且我将onkeypress事件设置为内​​联属性。但是,在Firefox中,当我按下一个键时,我得到一个“事件未定义”错误,它就是焦点。

<textarea rows="3" cols="70" type="text" name="resultsRename" value="" class="redlining_textContent_Dialog_textbox" dojoType="dijit.forms.SimpleTextArea" id="labelText" propercase="false" style="width:auto;" onkeypress="return handleEnterKey(event,doFunc();">

function handleEnterKey(e, func)
{
    //alert("hit key handler");
    //alert(dojo.toJson(e));
    var key = e.keyCode || e.which;
    if (key == 13)
    {
        func();
        return false;
    }
    else
    {
        return true;
    }

}

我已经看了很多帮助告诉我,我应该期望一个事件对象参数可用于我放在onkeypress attr中的js代码,但是我一直收到这个错误。

textarea标签不在一对表单标签内(我在某处看到这可能是一个问题,但我在这里别无选择。)

我尝试过只有e参数的handleEnterKey函数,但没有区别。

如果我将内联属性更改为...

onkeypress="return handleEnterKey(this,doFunc();"

...我输入handleEnterKey,我的e参数设置为textarea对象。为什么我没有传递事件对象?显然,这可以在IE中使用它的全局事件对象。

在我的智慧结束时。帮帮我stackoverflow ...你是我唯一的希望!

1 个答案:

答案 0 :(得分:4)

handleEnterKey甚至不应该被调用,因为你有语法错误。

return handleEnterKey(event,doFunc();

应该是

return handleEnterKey(event,doFunc);

传递event绝对有效:DEMO