【发布时间】: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 事件,
- Prevent both blur and keyup events to fire after pressing enter in a textbox
- 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 不应使其失去焦点。所以对你来说最好的办法就是问问写那个剧本的人为什么这样做。 -
哦,实际上,当输入是
-
啊奇怪,我在 Android N 上的 chrome 62 和 FF 53 都显示了它。也可能取决于使用的虚拟键盘。但无论如何,输入的默认值只是触发检查更改,而不是默认模糊。但是,如果输入格式相同,某些用户可能确实有这个 next 按钮。但是随后会触发模糊事件,因为它们确实切换到了新的输入。
标签: javascript html cordova google-chrome default