IE8点击事件问题

时间:2014-06-12 11:15:38

标签: javascript jquery internet-explorer-8

我有一个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....
});

1 个答案:

答案 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'