0

我发现昨天实际发布的关于 SO 的帖子(我现在找不到)说我下面的代码应该可以工作,但它没有——下面的“handleRtnKey(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;
    }
}

没有任何警报触发。

我从昨天发现了一个 SO 帖子,其中包含声称可以正常工作的接近准确的代码(没有我的警报)(对不起,我无法重新找到那个 SO 帖子)。

我需要使用直接的javascript(不是jquery)在我的输入文本框中获取keyup事件的键码——这就是我需要做的,如果是回车键,那么我会采取一些措施,但是现在我无法让上面的代码触发该 handleRtnKey() 函数——为什么?

编辑

Damon 向我介绍了关键字“event”,上面的代码现在可以正常工作——我只是将 html 代码中的参数从“e”重命名为“event”,javascript 处理程序现在可以正常工作——这是唯一的修改我必须制作上面的代码:

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

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

注意:javascript 函数 handleRtnKey(e) 未更改,我没有理由更改该函数的签名,它如下所示并且现在可以正常工作:

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;
    }
}

 THANKS DAMON.      
4

3 回答 3

1

您根本不需要争论,只需使用event

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

DEMO

于 2013-09-07T18:58:49.073 回答
0

问题是您使用您没有的参数调用该方法。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>
于 2013-09-07T18:16:28.890 回答
0

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

于 2013-09-08T19:58:17.497 回答