enterkeyhint是HTML全局属性,仅对<input>(text/search/url/email/tel等)、<textarea>及contenteditable元素有效,用于提示虚拟键盘回车键显示文字,不改变行为;支持值为enter/done/go/next/previous/search/send,Chrome 59+、Edge 79+、Safari 15.4+支持,Firefox当前仍不支持。
enterkeyhint 是 HTML 表单控件的原生属性,用于向虚拟键盘(如手机、平板)建议回车键应显示什么文字或图标,但它**不改变实际行为**,也不触发任何事件——只影响键盘 UI 提示。
enterkeyhint?仅对可编辑、能获得焦点且有输入语义的元素有效,包括:
<input>(type="text"、"search"、"url"、"email"、"tel" 等)<textarea>contenteditable 元素(但兼容性差,不推荐)不支持 <div>、<span> 或禁用/只读状态的输入框。Chrome 59+、Edge 79+、Safari 15.4+ 支持;Firefox 当前(v128)仍不支持。
enterkeyhint 的合法值和对应效果值不是自由文本,而是预定义关键词,浏览器据此映射到本地化键盘图标/文字:
立即学习“前端免费学习笔记(深入)”;
"enter" → 默认回车图标(↵),适用于发送消息、提交表单"done" → “完成”(✓ 或 Done),适合单行设置项(如昵称、城市)"go" → “前往”(→ 或 Go),常用于搜索框、URL 输入"next" → “下一个”,配合 tabindex 实现表单跳转"previous" → “上一个”,需手动处理焦点逻辑"search" → 搜索图标(?),比 type="search" 更明确提示意图"send" → “发送”,适合聊天输入框无效值(如 "submit" 或空字符串)会被忽略,退回到默认 "enter"。
enterkeyhint 却没变化?常见失效原因:
type,例如 <input type="number">(多数安卓键盘无视该属性)overflow: hidden 或 transform,导致焦点管理异常keydown 中的 Enter 键或使用 onsubmit
验证是否生效:真机调试(Chrome DevTools 的 Device Mode 不完全模拟软键盘行为)。
inputmode 和 type 才完整enterkeyhint 单独作用有限,需与输入意图协同:
<input type="search" inputmode="text" enterkeyhint="search">
<input type="url" inputmode="url" enterkeyhint="go">
<input type="password" enterkeyhint="next"> + JavaScript 监听 keydown 并 .focus() 下一个字段注意:inputmode="numeric" 时,即使设 enterkeyhint="send",键盘仍可能只显示数字键和默认回车 —— 这是系统级限制,无法绕过。
真正起作用的是组合:语义化的 type + 明确的 inputmode + 合理的 enterkeyhint。漏掉任意一环,移动端键盘体验就容易“猜错你的意图”。