【问题标题】:IE triggering button on Enter keyEnter键上的IE触发按钮
【发布时间】:2014-02-09 21:28:08
【问题描述】:

我在同一页面上有一个<button>(不是type="submit)和一个<input type="text"/>。

它们不在表单内,并且按钮在层次上高于输入的许多级别。

文本输入侦听keyup 事件并执行与按钮的作用无关的自定义操作。

但是,在 IE10 上,当按下 Enter 键时,会触发按钮并且文本输入永远不会获得键。 Chrome、Firefox 和 Opera(最新的所有 3 个)都很好。

当触发:active 状态时,我使按钮变为红色。当你专注于输入时,按钮不会改变,但是在按下 Enter 后,它会变成红色。

在按钮上设置tabindex="-1" 不会改变任何东西。

我找到的解决方法是:

  • 在输入时收听keydown 和preventDefault()。似乎keyup 为时已晚。
  • 将输入放入表单容器中

我都不喜欢这两个,尤其是第二个。还有什么我可以做的吗?
希望这是有人遇到过的。

编辑: 这是一个工作示例:http://plnkr.co/edit/LhmTpk5TpWDjOJUD18Bm?p=preview

谢谢。

【问题讨论】:

  • 你用哪个 IE 版本测试过这个?所有版本是否一致?您能否提供一个工作演示(例如在 jsFiddle、jsBin 等上)来演示它?
  • IE10,我现在不能制作小提琴,但如果以前没有人遇到过,我会的。我会将版本添加到标签中。谢谢。
  • stackoverflow.com/a/925387/1306811 :: IE 似乎将活动按钮定义为源中第一个定义的按钮。目前没有办法测试它,但它确实是答案,所以它可能会有所帮助!
  • 快速浏览了一下。问题是我的按钮不是提交输入元素,这两个元素都不在表单内。实际上,页面上没有表格。谢谢。

标签: javascript html internet-explorer internet-explorer-10


【解决方案1】:

不幸的是,我认为 preventDefault() 是你最好的选择。

IE 的早期版本(请记住发布您正在测试的版本!)因不兼容而臭名昭著(具有讽刺意味的是,通过对 HTML 架构的极其严格的解释)。

编辑:对于“答案”,该死的网站不让我发表评论,直到我达到 50 名声望。

【讨论】:

  • 你现在应该够了。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-11
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多