【问题标题】:IE8 click event issueIE8点击事件问题
【发布时间】: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


【解决方案1】:

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

具体

Internet Explorer 有一个恼人的怪癖,自 IE10 起仍然存在:提交按钮可以 在文本框中按下 Enter 时单击,即使不存在。[...] 没有其他 浏览器表现出这种行为。

短期修复:将您的按钮设为type='button' 而不是type='submit'

【讨论】:

  • 我会检查一下并回复你...我只是注意到我没有指定按钮类型所以这可能是一个线索
  • 谢谢 - 看起来这就是答案
猜你喜欢
  • 2014-01-16
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多