enterkeyhint 是 HTML input/textarea 的提示属性,用于建议移动端回车键显示文本(如“搜索”“发送”),支持 enter、done、go、next、previous、search、send 七个值,需配合 type 属性使用且受系统/输入法支持限制。

enterkeyhint 是什么,它能控制哪些键盘文字
enterkeyhint 是 HTML <input> 和 <textarea> 的原生属性,用于向移动端浏览器建议回车键(Enter key)应显示的文本标签,比如 “搜索”“发送”“下一步”。但它只是“建议”,不是强制指令——实际显示取决于浏览器、操作系统和输入法是否支持。iOS Safari、Chrome Android(v71+)、Edge for Android 都已支持,但旧版 WebView 或部分国产输入法可能忽略该属性。
支持的值有哪些,对应什么场景
可选值只有有限几个:enter、done、go、next、previous、search、send。它们不是随意命名的,而是有语义映射:
-
search→ 键盘通常显示“搜索”(iOS/Android 一致,最可靠) -
send→ 多用于聊天输入框,iOS 显示“发送”,Android 部分键盘显示“发送”或“回车” -
next→ 表单中跳转到下一个字段,iOS 显示“下一”,Android 可能显示“下一步”或“继续” -
done→ 表示结束输入,iOS 显示“完成”,Android 常为“完成”或“关闭键盘” -
go→ 多用于 URL 输入,iOS 显示“前往”,Android 可能显示“转到”
注意:enter 是默认值,不写该属性时等效于 enterkeyhint="enter";写成 enterkeyhint="submit" 或 "ok" 会直接被忽略,浏览器按默认处理。
怎么写才真正生效,常见失效原因
即使写了正确的值,也可能看不到效果。关键点在于:
立即学习“前端免费学习笔记(深入)”;
- 必须配合
type属性使用:例如type="search"+enterkeyhint="search"组合最稳定;type="text"也能用,但某些 Android 输入法对非语义 type 支持较弱 - 避免与
inputmode冲突:比如inputmode="numeric"时,键盘是数字键盘,回车键文字可能被系统强制固定为“回车”,enterkeyhint失效 - 不要用 JS 动态设置:通过
el.setAttribute('enterkeyhint', 'send')在运行时修改,多数浏览器不触发键盘重绘,需重新 focus 才可能生效(且不稳定) - iOS 上若父容器有
transform或iframe嵌套过深,偶尔导致键盘提示不更新,可尝试加translateZ(0)强制硬件加速
正确写法示例:<input type="search" enterkeyhint="search" placeholder="搜索商品"><textarea enterkeyhint="send" placeholder="发消息..."></textarea>
替代方案:当 enterkeyhint 不起作用时怎么办
如果目标机型或输入法完全不响应 enterkeyhint(比如某些华为/小米自带输入法),只能退而求其次:
- 用
type="search"替代type="text":这是目前兼容性最好的组合,几乎所有移动端浏览器都会把回车键显示为“搜索” - 监听
keydown事件捕获Enter键,再结合 UI 提示(如按钮旁加“按回车发送”文案),弥补键盘提示缺失 - 避免依赖回车键完成核心操作:例如搜索框同时提供显式“搜索”按钮,防止用户因没看到预期按键而卡住
真正起作用的从来不是那个小字,而是整个输入上下文是否让系统相信“这确实是个搜索行为”。enterkeyhint 只是最后一层提示,别把它当成开关。



















