【发布时间】:2014-06-12 11:15:37
【问题描述】:
我有一个 JQuery (1.8) 数据表 (1.10),其中包含一些可就地编辑的字段,即单击它们会创建一个输入元素,可以在其中键入新数据以更新表。
在 IE8 中(但不是在 Chrome 或 Firefox 中,我没有更高的 IE 版本),在可编辑字段中按下 return 似乎也会为表格外的按钮生成“点击”事件。不幸的是,此按钮会打开一个 Bootstrap 模式对话框。
为什么会发生这种情况,最好的解决方法是什么? AFAICT 输入字段没有点击处理程序(有一个 keyup 处理程序返回 false 以停止传播)。目前我假设这是某种涉及 IE8 如何以不同方式处理事件的问题,但我不确定它是如何在此按钮上生成点击事件的。
输入事件监听器是:
_setupEventListeners: function (tableEditor) {
// Listen for key presses to trigger any finalisation actions
this.element.on('keyup', function (event) {
switch (event.keyCode) {
// return or enter keys
case KEYCODE_ENTER:
tableEditor.saveAndClose();
break;
// esc key
case KEYCODE_ESCAPE:
tableEditor.revertAndClose();
break;
}
// may be overkill as JQ does stopPropagation if false returned??
event.stopPropagation();
(event.preventDefault) ? event.preventDefault() : event.returnValue = false;
return false;
});
},
按钮事件处理程序是:
$(tableId + '-addRow').click(function (event) {
console.log("AddRow click");
// modal opened here....
});
【问题讨论】:
-
我愿意,但它是一个内部工具,不幸的是分布在多个模块中。我将尝试编辑此问题以包含其中的一部分。
-
也许您正在谈论的按钮是
focused,当您点击 enter 会导致这样的行为 -
无法聚焦 - 按回车时光标在输入字段中。
标签: javascript jquery internet-explorer-8