autocapitalize 是 iOS Safari 专用的 HTML 属性,影响英文键盘首字母大写策略,需配合 type≠password/search 且 autocorrect="on" 才生效,不校验输入、对中文拼音无效。

autocapitalize 在 iOS Safari 中的实际表现
这个属性在 iOS Safari 上才真正起作用,Android 原生浏览器和 Chrome for Android 基本忽略它(即使声明了也无效果)。它不是 CSS 属性,而是 <input> 或 <textarea> 的 HTML 属性,用于向系统键盘提示“期望输入什么类型的内容”,从而触发对应的大写策略。
可选值及对应行为
取值直接影响键盘首字母状态,但要注意:它不强制校验,只影响键盘初始大写状态和后续自动切换逻辑。
-
off:键盘始终小写,不自动大写(包括句首、专有名词) -
none:同off,是更明确的写法(推荐用这个) -
sentences:句首字母自动大写(遇到句号、问号、感叹号后下一句首字母大写) -
words:每个单词首字母都尝试大写(iOS 实际表现不稳定,常退化为sentences) -
characters:所有字母默认大写(类似 Caps Lock 开启)
必须配合 type 和 autocorrect 才能稳定生效
单独写 autocapitalize 很容易失效。iOS 要求同时满足:type 不能是 password 或 search(这两个类型会强制禁用首字母大写),且 autocorrect 不能设为 off(否则系统认为用户不需要任何输入辅助)。
正确示例:
立即学习“前端免费学习笔记(深入)”;
<input type="text" autocapitalize="sentences" autocorrect="on">
错误组合(不会触发首字母大写):
<input type="password" autocapitalize="sentences"><input type="text" autocapitalize="sentences" autocorrect="off"><input type="search" autocapitalize="sentences">
别指望它做数据校验或服务端一致性保障
这个属性纯属客户端键盘提示,用户仍可手动切小写、粘贴全小写内容,甚至绕过键盘直接调用 input.value = 'hello world'。服务端永远要按需做首字母大写处理(比如用 String.prototype.replace() 或后端 ucfirst),不能依赖前端属性。
最容易被忽略的一点:它对中文拼音输入法无效——拼音键盘不响应 autocapitalize,只有英文键盘模式下才生效。如果你的表单主要面向中文用户,这个属性实际影响范围很有限。



















