在 HTML 文本输入元素中按 Enter 时的默认行为

问题描述 投票:0回答:2

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

在我的 Chrome 63.0 上,当我在 input[type=text] 中按 enter 时,它会触发

change
事件,并且不会触发
blur
事件。 (我厌倦了这个https://jsfiddle.net/agentmilindu/ekhT4/2984/

但是,我在某些浏览器中看到,按下

enter
时会触发 blur 事件。

我在 StackOverflow 上看到很多问题,询问如何在按下 Enter 键时停止触发此

blur
事件,

  1. 防止在文本框中按 Enter 后触发模糊和按键事件
  2. javascript 中的 onkeypress + onblur

我目前正在研究的应用程序(用 React 编写的 PhoneGap 应用程序)有一个功能,当用户按下

enter
时,该功能会由 blur 事件触发,但在新浏览器中(新手机和我的 Chrom 63.0 上也是如此)不工作。

现在我很困惑当有人在 input[type=text] 字段中按 enter 时实际的默认行为是什么。应该是

change
+
blur
还是只是
change
?有什么文件可以参考吗?

javascript html cordova google-chrome default
2个回答
0
投票

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

1) 失焦时触发模糊;文本改变与否并不重要;如果焦点失焦,则模糊触发

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

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

单独不会引发改变;

希望这有帮助。


0
投票

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.”
© www.soinside.com 2019 - 2024. All rights reserved.