我有以下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 ...你是我唯一的希望!
答案 0 :(得分:4)
handleEnterKey
甚至不应该被调用,因为你有语法错误。
return handleEnterKey(event,doFunc();
应该是
return handleEnterKey(event,doFunc);
传递event
绝对有效:DEMO