Javascript 未调用onkeyup处理程序
我在上找到了一个帖子,实际上是昨天发布的(我现在找不到了),上面说我下面的代码应该可以工作,但它没有——下面的“handlertkey(e)”函数从未调用过——为什么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
<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
};