enterkeyhint仅建议软键盘回车键文案,不触发行为;仅对input(text/search/url/tel/email/password)和textarea有效,合法值为enter/done/go/next/previous/search/send,其中search兼容性最强,send在Android较常见但iOS支持差。

enterkeyhint 不会自动触发发送、搜索或提交——它只是向软键盘“建议”回车键该显示什么文字,浏览器和输入法有权忽略。
哪些元素和值真正生效
只对 <input>(type 为 text、search、url、tel、email、password)和 <textarea> 有效;<button>、<div contenteditable> 或禁用状态的输入框上加了也白加。
合法值只有七个严格小写的字符串:enter、done、go、next、previous、search、send。传 "Send"、"发送" 或空字符串会被静默降级为 enter。
-
search是目前兼容性最强的值,iOS 和 Android 主流键盘基本都显示搜索图标 -
send在 Android Chrome、Samsung Internet 和企业微信 WebView 中较常见,但 iOS Safari 15.4 之前完全不支持,16.4+ 仍不稳定 -
done在表单末尾字段(如密码框)上 iOS 更倾向显示“完成”,部分 Android 厂商键盘可能无视
为什么写了却没变化
不是代码写错了,而是环境或配置没到位:
立即学习“前端免费学习笔记(深入)”;
- 没在真机上聚焦测试——Chrome DevTools 的设备模拟器不渲染 enterkeyhint 效果
-
<input type="number">或type="date"等类型,多数安卓键盘直接忽略该属性 - 父容器用了
transform、overflow: hidden或深嵌套iframe,导致焦点上下文丢失 - Vue/React 封装的 input 组件未把
enterkeyhint透传到原生节点上 - 页面缺失
<meta name="viewport" content="width=device-width, initial-scale=1">,iOS 可能禁用软键盘优化
怎么配才让“发送”或“搜索”提示真正起作用
靠单个属性不行,必须组合使用:
- 搜索场景优先用
<input type="search" inputmode="search" enterkeyhint="search">,比type="text"稳得多 - 聊天输入框若坚持用
<textarea>,需配合onkeydown监听:if (event.key === 'Enter' && !event.shiftKey) { event.preventDefault(); sendMessage(); } - 避免把
<input>套在<form>里却不处理onsubmit——用户点“搜索”键仍会触发表单提交,而不是你的 JS 函数 - 设
enterkeyhint="done"不等于键盘自动收起,必须在逻辑末尾手动调input.blur()
容易被忽略的关键点
最常被绕过的不是语法,而是行为边界:enterkeyhint 不参与事件流,也不改变默认行为。你监听 keydown 时,event.key 仍是 'Enter',不是 'send';你阻止默认行为后,如果忘了手动调用搜索或发送函数,键盘就“卡住”了——看起来像属性失效,其实是逻辑断在了中间。



















