【问题标题】:Firefox onkeypress event not passing in event parameterFirefox onkeypress 事件未传入事件参数
【发布时间】:2011-12-01 14:10:10
【问题描述】:

我有以下 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 中使用它的全局事件对象可以正常工作。

无计可施。帮助我 Stack Overflow...你是我唯一的希望!

【问题讨论】:

    标签: javascript firefox dom-events onkeypress


    【解决方案1】:

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

    return handleEnterKey(event,doFunc();
    

    应该是

    return handleEnterKey(event,doFunc);
    

    传递event 绝对有效:DEMO

    【讨论】:

      猜你喜欢
      • 2011-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-18
      • 1970-01-01
      • 2018-08-16
      • 2020-09-04
      • 2019-05-21
      相关资源
      最近更新 更多