我正在解决 HTML 输入字段的跨浏览器兼容性问题。
在我的 Chrome 63.0 上,当我在 input[type=text] 中按 enter 时,它会触发
change
事件,并且不会触发 blur
事件。 (我厌倦了这个https://jsfiddle.net/agentmilindu/ekhT4/2984/)
但是,我在某些浏览器中看到,按下
enter时会触发
blur
事件。
我在 StackOverflow 上看到很多问题,询问如何在按下 Enter 键时停止触发此
blur
事件,
我目前正在研究的应用程序(用 React 编写的 PhoneGap 应用程序)有一个功能,当用户按下
enter时,该功能会由
blur
事件触发,但在新浏览器中(新手机和我的 Chrom 63.0 上也是如此)不工作。
现在我很困惑当有人在 input[type=text] 字段中按 enter 时实际的默认行为是什么。应该是
change
+blur
还是只是change
?有什么文件可以参考吗?
对于应用程序我不能说太多,但对于浏览器来说; (我在 chrome 61 和 Firefox 55 中尝试了你的小提琴),这些是我的观察;
1) 失焦时触发模糊;文本改变与否并不重要;如果焦点失焦,则模糊触发
2) 仅在以下情况下才会触发更改:
i) text content changes within the input box changes
ii) enter key is pressed
单独不会引发改变;
希望这有帮助。
HTML 规范文档
https://html.spec.whatwg.org/multipage/form-control-infrastruct.html#implicit-submission
假设浏览器 UserAgent 可能被设置为在输入“文本”元素中按下 Enter 时导致表单提交。
根据:
https://www.tjvantoll.com/2013/01/01/enter-should-submit-forms-stop-messing-with-that/
“There are pages on the Web that are only usable
if there is a way to implicitly submit forms,
so user agents [browsers] are strongly encouraged
to support this.”