enterkeyhint仅在chromium系(chrome、edge、opera)和safari(ios 16.4+/macos 13.3+)中生效,firefox完全不支持;合法值为enter/done/go/next/previous/search/send,仅影响软键盘回车键文案,不改变行为。

enterkeyhint 在哪些浏览器里真正起作用
这个属性目前只在 Chromium 系统(Chrome、Edge、Opera)和 Safari(iOS 16.4+ / macOS 13.3+)中被支持,Firefox 完全忽略它。Android 原生键盘(如 Gboard)会响应 enterkeyhint,但部分第三方输入法(如搜狗、百度)可能直接无视——不是你写错了,是它们没实现。
所以别指望它在所有设备上统一生效,尤其别用它做功能逻辑依赖(比如“用户按搜索键就触发提交”),只能作为体验优化。
合法值有哪些,各自对应什么键盘提示
enterkeyhint 只接受固定字符串,大小写敏感,非法值会被浏览器静默降级为 enter:
-
enter:默认回车图标(换行/发送) -
done:完成(常用于单行表单末尾) -
go:前往(适合跳转类操作,如搜索、进入详情) -
next:下一个(多字段表单中焦点移到下一项) -
previous:上一个(较少见,需配合 tabindex 或 JS 手动处理) -
search:搜索(多数键盘会显示放大镜图标) -
send:发送(聊天场景常用)
注意:next 和 previous 不会自动切换焦点,只是改按键图标;真要跳转,还得靠 tabindex 或 JS 监听 keydown 捕获 Enter 键并手动 .focus()。
和 form 的 submit 行为冲突怎么办
当 <input> 在 <form></form> 内且未设 type="button" 时,无论 enterkeyhint 是什么值,按下回车仍会触发表单提交——因为这是 HTML 表单的默认行为,enterkeyhint 不影响事件流。
想让 enterkeyhint="search" 真正执行搜索逻辑(而非提交),必须:
- 加
onsubmit="event.preventDefault()"阻止默认提交 - 或给
<input>绑定keydown事件,检测event.key === 'Enter'后调用自定义函数 - 避免同时设
enterkeyhint="go"却又没处理跳转逻辑,用户看到“前往”图标却无反应,体验反而更差
顺带一提:type="search" 输入框在 Safari 中会自动显示清空按钮和搜索图标,此时 enterkeyhint="search" 是冗余的,可省略。
移动端软键盘收起失败的常见原因
很多人以为设了 enterkeyhint="done" 就能点一下关键盘,结果点完还是没反应——问题往往不在这个属性本身:
- 输入框失去焦点前没调用
blur(),键盘不会收 - 页面用了
position: fixed或transform,导致 iOS Safari 无法正确判断输入框是否已退出可视区 - 在
input的change或blur回调里异步执行blur()(比如等 API 返回后再收键盘),这时键盘早已“忘记”上下文
最稳妥的做法:在用户点击“完成”或“搜索”后,立即同步调用 inputElement.blur(),再处理业务逻辑。别指望 enterkeyhint 自己搞定收场。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











