Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未调用onkeyup处理程序_Javascript_Html - Fatal编程技术网

Javascript 未调用onkeyup处理程序

Javascript 未调用onkeyup处理程序,javascript,html,Javascript,Html,我在上找到了一个帖子,实际上是昨天发布的(我现在找不到了),上面说我下面的代码应该可以工作,但它没有——下面的“handlertkey(e)”函数从未调用过——为什么 <input type="text" id="zer" onkeyup="handleRtnKey(e)"/> // my javascript function -- by the way, I will not be using jquery. function handleRtnKey(e) { ale

我在上找到了一个帖子,实际上是昨天发布的(我现在找不到了),上面说我下面的代码应该可以工作,但它没有——下面的“handlertkey(e)”函数从未调用过——为什么

<input type="text" id="zer" onkeyup="handleRtnKey(e)"/>

// my javascript function -- by the way, I will not be using jquery.
function handleRtnKey(e)
{
    alert("Just entered handleRtnKey()");

    if (!e) 
    {
        e = window.event;   // resolve event instance for IE    
    }

    alert("Just entered handleRtnKey(), e.keyCode is: " + e.keyCode);
    alert("Just entered handleRtnKey(), e is: " + e);

    if (e.keyCode == '13')
    {
      alert("handleRtnKey: got the RTN key up event.");
      return false;
    }
}

问题是,您使用没有的参数调用方法。e未声明。如果你移除它,它就会工作。这个代码对我有用:

<input type="text" id="zer"/>

<script>
window.onload = function () {
    document.getElementById("zer").onkeyup = function(event) {
        if (event.keyCode == 13) {
            alert("Just entered handleRtnKey()");
        }
    };
};
</script>

window.onload=函数(){
document.getElementById(“zer”).onkeyup=函数(事件){
如果(event.keyCode==13){
警报(“刚输入handleRtnKey()”;
}
};
};

您根本不需要参数,只需使用
事件即可:

function handleRtnKey() {
    event = event || window.event; // for cross-browsing
    alert(event); // or do whatever you want with it
};

我的问题的解决方案正如Damon在上面的评论中指出的那样——我不知道有一个预定义的“event”关键字,当我在上面的代码中使用“event”而不是“e”时,它工作得很好

我已经注意到了,但是我没有从中提取关键代码的事件。我看到的所有示例都在html中声明了onkeyup处理程序函数的参数,比如这里-看看Tim Down的第二个答案:stackoverflow.com/questions/6275217/firefox html keyup event has no event data/6275969#6275969你刚才回答了你自己的问题吗?您需要将关键字“event”作为参数传递吗?请删除
e
,然后重试@Epasarello,谢谢,但正如我上面提到的,我已经发现删除参数至少可以调用处理程序,但是我需要事件来获取键码,因此我必须能够访问实际的事件对象。”删除e并尝试它,正如我所说的,我已经这么做了(见上面我说的“我已经注意到了”)——谢谢你的建议!e签入原始代码将处理未定义的e,因此您将拥有事件对象。代码运行:您现在的问题是什么?查看控制台
Uncaught ReferenceError:e未定义
是的,我知道事件未定义——但我在上看到了几篇文章,其中描述了将“事件”参数从html的onkeyup传递到函数的过程——例如本文中的第三个答案和onkeypress处理程序,特别是这一行代码:onkeypress=“searchKeyPress(event);--读这篇文章:在那篇文章中,他们传递的是
event
,这不是
e
@vladkras,真的吗?你确定吗。看看我对错误消息的第一条评论。它不是在事件处理程序中定义的,而是在函数中定义的。
<input type="text" id="zer"/>

<script>
window.onload = function () {
    document.getElementById("zer").onkeyup = function(event) {
        if (event.keyCode == 13) {
            alert("Just entered handleRtnKey()");
        }
    };
};
</script>
function handleRtnKey() {
    event = event || window.event; // for cross-browsing
    alert(event); // or do whatever you want with it
};