我有以下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标记不在一对form标记内(我在某处看到这有时可能是个问题,但在这里我别无选择)。

我已经尝试了仅使用e参数的handleEnterKey函数,但这没有区别。

如果我将inline属性更改为...

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


...输入我的e参数设置为textarea对象的handleEnterKey。为什么我没有通过事件对象?显然,这在IE中使用其全局事件对象可以很好地工作。

尽我的智慧。帮助我stackoverflow ...您是我唯一的希望!

最佳答案

由于语法错误,甚至不应调用handleEnterKey

return handleEnterKey(event,doFunc();


应该

return handleEnterKey(event,doFunc);


传递event绝对有效:DEMO

10-05 20:58
查看更多