我有一个JQuery(1.8)Datatable(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....
});
答案 0 :(得分:4)
请参阅http://tjvantoll.com/2013/05/22/why-are-enter-keypresses-clicking-my-buttons-in-ie/
具体地
Internet Explorer有一个恼人的怪癖,从IE10开始仍然存在:提交按钮可以 在文本框中按Enter键时单击,即使没有。[...]没有其他 浏览器表现出这种行为。
简短修复:按下type='button'
按钮而不是type='submit'