enterkeyhint仅在部分浏览器和输入法中生效,合法值仅有enter、done、go、next、previous、search、send七个严格小写字符串,大小写错误或非法值会被静默降级为enter;search兼容性最强,ios/android主流键盘均稳定显示“搜索”图标;done适用于表单末尾字段如密码框,ios上易触发“完成”;send在android chrome、samsung internet及企业微信webview中较常见,但ios safari基本无效;next和previous仅改按键文案,不自动跳焦点,需配合tabindex或js focus()实现;type与autocomplete必须合理搭配才能提升生效概率,如搜索用type="search" enterkeyhint="search"最稳妥;firefox完全不支持,safari 16.4+才较完整支持,textarea在ios上支持极差;该属性不触发事件、不改变提交行为,实现发送逻辑仍需监听keydown判断enter键。

enterkeyhint 不是万能开关,它只在部分浏览器和输入法中生效,且必须配合 type 和 autocomplete 才可能显示你想要的文案。
哪些值合法,哪些会被浏览器直接忽略
合法值只有七个固定小写字符串:enter、done、go、next、previous、search、send。大小写敏感,传 "Search" 或 "发送" 会被静默降级为 enter。
-
search是目前兼容性最强的值,iOS/Android 主流键盘基本都能稳定显示“搜索”图标 -
done在表单末尾字段(如密码、确认邮箱)较易触发“完成”提示,尤其在 iOS 上 -
send在 Android Chrome、Samsung Internet 及企业微信 WebView 中较常见,但在 iOS Safari 上几乎无效 -
next和previous不会自动跳焦点,只是改按键文案;真要切换,还得靠tabindex或 JS 调用.focus()
为什么写了 enterkeyhint="send" 却还是显示“搜索”
这不是你代码写错了,而是浏览器或输入法没采纳建议。iOS Safari 直到 15.4 才开始支持该属性,且对 send 基本无视;微信 X5 内核也会降级处理,按 type 推断出“搜索”。
- 真机测试前别信 DevTools 的设备模拟器——
enterkeyhint对物理键盘和模拟器完全无效 -
type="text"+enterkeyhint="send"组合在 iOS 上大概率 fallback 到“搜索”或“前往” - 想提高成功率,优先选语义匹配的
type:比如搜索框用type="search",URL 输入用type="url"
怎么写才更可能生效
单独设 enterkeyhint 很难起作用,关键靠组合策略:
- 搜索场景:
<input type="search" enterkeyhint="search">—— 这是目前最稳的写法 - 聊天输入:
<input type="text" enterkeyhint="send" autocomplete="off">,并确保在 Android Chrome 或企业微信 WebView 中验证 - 多步表单:
<input type="text" enterkeyhint="next" autocomplete="given-name">,同时合理设置tabindex - 避免冲突:
inputmode="numeric"会强制数字键盘,此时enterkeyhint几乎失效
容易被忽略的兼容性硬伤
Firefox 完全不支持 enterkeyhint;Safari 16.4+ 才开始较完整支持;<textarea></textarea> 在 iOS 上对该属性支持极差,单行输入优先用 <input type="text">。
别把功能逻辑绑在 enterkeyhint="send" 上——它不触发任何事件,也不改变表单默认提交行为。真要实现“按发送键就发消息”,还得监听 keydown 并判断 event.key === 'Enter',再手动调用逻辑。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











