编程语言
首页 > 编程语言> > javascript-IE8点击事件问题

javascript-IE8点击事件问题

作者:互联网

我有一个JQuery(1.8)Datatable(1.10),其中某些字段可以在原地编辑,即单击它们会创建一个输入元素,可以在其中输入新数据来更新表.

在IE8中(但在Chrome或Firefox中却没有,我没有更高版本的IE),在可编辑字段中按回车键似乎还会为表格外的按钮生成一个“单击”事件.不幸的是,此按钮将打开Bootstrap模态对话框.

为什么可能会发生这种情况?解决该问题的最佳方法是什么? AFAICT在输入字段中没有单击处理程序(有一个键入处理程序,该处理程序返回false以停止传播).目前,我假设这是涉及IE8如何处理事件的某种问题,但是我不确定它如何在此按钮上生成click事件.

输入事件侦听器为:

_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....
});

解决方法:

查看http://tjvantoll.com/2013/05/22/why-are-enter-keypresses-clicking-my-buttons-in-ie/

特别

Internet Explorer has an annoying quirk that still exists as of IE10: submit buttons can be
clicked when Enter is pressed in a textbox, even when no is present.[…] No other
browsers exhibit this behavior.

简短修正:将您的按钮类型设置为“ button”,而不是type =“ submit”

标签:javascript,jquery,internet-explorer-8
来源: https://codeday.me/bug/20191029/1960126.html