onkeydown事件变量破坏EventListener代码
onkeydown event variable breaking the EventListener code
我有以下Javascript代码:
var field = document.createElement("INPUT");
field.type = "text";
field.addEventListener("blur", function() {
// stuff that works
(e ? e : window.event).stopPropagation();
return false;
};
field.addEventListener("keydown", function() {
alert("1");
if (e) {
alert("2");
} else {
alert("3");
e = window.event;
}
alert("4");
if (e.keyCode === 13) {
this.blur();
}
return true;
}
输入字段不在表单中。按enter键或移出焦点意味着将字段值提交给服务器(我无法更改现有代码)。onblur
事件正常,onkeydown
事件不正常。alert("1")
完全执行,但仅此而已。没有别的事情发生。
我已经尝试了周围的实验,我的猜测是,e
的存在是打破代码。我不知道如何:不所有的事件监听器传递一个e
参数被调用的函数?这是怎么回事?我该如何解决这个问题?
您不接受e
参数。
在你的工作事件中,如果e
存在,你使用它(它不会),或者如果它不存在,你就回退到window.event
:
(e ? e : window.event)
在故障事件侦听器中不存在类似的检查。
确保您接受一个名为e
:
field.addEventListener("keydown", function(e) {
…它将在您的代码中可用
相关文章:
- 从桌面读取python文件时高亮显示代码
- 如何将函数包装在函数中以避免代码重复
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 货币代码为欧元-金额的格式不应包含小数
- Regex代码只允许一个空格
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- 从var向代码隐藏函数传递值
- 如何动态插入jquery代码
- 如何在php变量中嵌入JQuery代码
- 代码不会验证
- 如何从rails中的代码中删除新行( )
- Angularjs代码未在匿名函数中运行
- 如何做到这一点,使代码在不传递条件后执行函数
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- 面向对象的Javascript代码在IE7中不起作用
- 将 jQuery 代码添加到 Index.aspx 页面
- 为什么忽略了eval()代码中的语法错误
- 如何在Javascript EventListener未触发的情况下运行代码
- EventListener长代码失败,原因
- onkeydown事件变量破坏EventListener代码