enterkeyhint="send"在iOS上常显示“搜索”是因为Safari 15.4前不支持,16.4+才有限识别,且受输入法和内核(如微信X5)限制;需搭配type="text"、form提交监听等才能提升兼容性。

设 enterkeyhint="send" 本身不修改样式,只提供建议;它不能把“搜索”变成“发送”,尤其在 iOS 上基本无效。
为什么 enterkeyhint="send" 在 iOS 上总显示“搜索”
iOS Safari 直到 15.4 才开始支持该属性,且对 send 值几乎无视——即使写了,也常 fallback 到 search 或 go。Safari 16.4+(iOS 16.4+)才真正开始识别 send,但实际渲染仍取决于输入法和键盘厂商(如 Apple 自带键盘、第三方输入法)。微信 X5 内核更会直接降级,按 type 推断:type="text" → “搜索”,type="search" → “搜索”,哪怕写了 send 也没用。
- 真机测试必须,PC 模拟器完全无效果
- Android Chrome 和 Samsung Internet 支持较好,
send多数显示“发送”或“↵”图标 - Firefox 完全不支持,任何值都静默忽略
enterkeyhint="send" 的合法搭配与常见失效场景
这个属性不是独立生效的,必须配合 type 和上下文才有意义。单独写 <input enterkeyhint="send"> 几乎必然失效。
- 优先用
type="text",不要用type="textarea"—— iOS 对后者几乎不响应enterkeyhint -
type="search"+enterkeyhint="send"是反模式:浏览器会优先信任type,强制显示“搜索” - 如果表单有
onsubmit但没阻止默认行为,点击“发送”键可能直接提交(Android 更容易触发),而 iOS 可能只收起键盘 - 写了
inputmode="text"却配enterkeyhint="send",语义冲突,部分 Android 键盘会降级为enter
真正能稳定显示“发送”的组合方案
没有纯 HTML 方案能 100% 强制改文案,但以下组合在主流环境(Android + iOS 16.4+ + 微信最新版)覆盖度最高:
立即学习“前端免费学习笔记(深入)”;
<input type="text" inputmode="text" enterkeyhint="send" placeholder="说点什么...">- 确保该
input在<form>内,且form有onsubmit或显式监听submit事件 - 避免同时设
autocapitalize="sentences"或spellcheck="true",某些键盘会因此降级提示 - 若需兼容 iOS 15.x 及更早版本,放弃
send,改用enterkeyhint="done"+ JS 拦截keydown中的 Enter 键并手动触发发送逻辑
别踩的坑:以为改了文案就等于绑定了行为
enterkeyhint 不触发任何事件,也不改变表单默认行为。你看到“发送”按钮,不代表点了就会调用你的发送函数。
- 没监听
submit事件?点击后可能页面刷新或跳转 - 用了
event.preventDefault()却忘了form.submit()或手动调用 API?键盘收起了,但啥也没发生 - 在聊天场景中混用
textarea和enterkeyhint="send"?iOS 下大概率还是换行,不是发送
最易被忽略的一点:软键盘按钮文案 ≠ 行为控制权。你得靠 JS 显式接管回车逻辑,enterkeyhint 只是给用户一个视觉提示——提示错了,用户不会怪浏览器,但会怪你功能没反应。



















