【问题标题】:Default behavior when press enter in HTML text input elements在 HTML 文本输入元素中按 Enter 时的默认行为
【发布时间】:2017-11-22 06:02:03
【问题描述】:

我正在处理 HTML 输入字段的跨浏览器兼容性问题。

在我的 Chrome 63.0 上,当我在 input[type=text] 中按下 enter 时,它会触发 change 事件,并且不会触发 blur 事件。 (我厌倦了这个https://jsfiddle.net/agentmilindu/ekhT4/2984/

但是,我看到在某些浏览器中,按下 enter 时会触发 blur 事件。

我在 StackOverflow 上看到很多问题,询问如何在按下 enter 时停止触发 blur 事件,

  1. Prevent both blur and keyup events to fire after pressing enter in a textbox
  2. onkeypress + onblur in javascript

我目前正在调查的应用程序(一个用 React 编写的 PhoneGap 应用程序)有一个功能,当用户按下 enter 时,blur 事件会触发该功能,但在新浏览器中(新手机和在我的 Chrom 63.0 上也是如此)这不起作用。

现在我很困惑,当有人在 input[type=text] 字段中按下 enter 时,实际的默认行为是什么。应该是change+blur 还是只有change?有什么文件可以参考吗?

【问题讨论】:

  • 在“聚焦”情况下触发模糊事件;我希望这很清楚;因此,当您按 Enter 键时,焦点会退出输入框,从而调用模糊。在你的小提琴中,我没有看到按下回车键调用模糊(m 使用 chrome 61)
  • 是的,当我在小提琴中按enter 时,我也没有收到blur 事件。这是默认行为吗?但我也看到有人收到blur 事件。至少我正在调查的应用程序期望在按下enter 键时触发blur 事件。 @RajkumarSomasundaram
  • 您链接到的first question 具有此行为,因为它们在change 事件处理程序中调用了alert(),从而使整个页面失去焦点(fiddle)。第二个问题似乎并不意味着您描述的行为会发生。我阅读这些规范已经很长时间了,但是 IIRC,在输入中按 enter 不应使其失去焦点。所以对你来说最好的办法就是问问写那个剧本的人为什么这样做。
  • 哦,实际上,当输入是
    的一部分时,他们可能想到了您所拥有的 next 按钮,而不是移动设备上的默认输入。
  • 啊奇怪,我在 Android N 上的 chrome 62 和 FF 53 都显示了它。也可能取决于使用的虚拟键盘。但无论如何,输入的默认值只是触发检查更改,而不是默认模糊。但是,如果输入格式相同,某些用户可能确实有这个 next 按钮。但是随后会触发模糊事件,因为它们确实切换到了新的输入。

标签: javascript html cordova google-chrome default


【解决方案1】:

对于应用我不能说太多,但对于浏览器; (我在 chrome 61 和 Firefox 55 中都试过你的小提琴),这些是我的观察;

1) 聚焦时触发模糊;文字改变与否无关紧要;如果有焦点,则模糊触发

2) 只有在以下情况下才会触发更改:

i)  text content changes within the input box changes
ii) enter key is pressed

两者都不会触发变化;

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-08
    • 2023-02-17
    • 2013-09-13
    • 2013-11-20
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    相关资源
    最近更新 更多