autocapitalize="none" 是密码和用户名字段的必需配置,否则 iOS Safari 会默认句首大写;常见错误包括 password 类型未设该属性、仅关 autocorrect 而忽略 autocapitalize、第三方组件未透传属性等。

autocapitalize="none" 是密码和用户名字段的底线配置
不加 autocapitalize="none",iOS Safari 会默认对 type="text" 启用句首大写,用户输 Password123 很容易变成 Password123(首字母已大写),但实际想输的是全小写用户名或区分大小写的密码。这个值不是可选项,而是必须项。
常见错误组合:
-
type="password"却没写autocapitalize="none"—— 旧版 iOS(如 iOS 12.2 前)仍可能触发大写 -
autocorrect="off"单独存在,却漏掉autocapitalize="none"—— 拼写纠正关了,但键盘 Shift 键仍亮着,首字母照常大写 - 用第三方组件(如 Vant 的
)却只在组件 props 里设autocapitalize,没透传到内部—— 属性根本没生效
autocapitalize="words" 对姓名字段效果有限,别当数据校验用
这个值在 iOS 上会让 “john doe” 输入时变成 “John Doe”,但 Android 大部分输入法(Gboard、三星键盘)基本忽略它;更关键的是,它只响应空格分隔,对换行、制表符、中文标点后的“单词”无反应。用户粘贴 zhang san 过来,照样是小写。
真正要保证姓名首字母大写,得靠 JS 补一手:
input.addEventListener('input', e => {
e.target.value = e.target.value.replace(/(^|\s)\w/g, c => c.toUpperCase());
});
注意:这个正则不处理带变音符号的字符(如 café),也不兼容 emoji 或中文,纯英文场景够用。
autocapitalize="sentences" 在 textarea 中最稳,但标点识别有硬限制
这是目前兼容性最好的值,iOS 和较新 Android WebView 都支持。但它只识别英文句号 .、问号 ?、感叹号 ! + 空格的组合,遇到中文句号 。、顿号 、 或换行,下一句首字母不会自动大写。
所以它适合纯英文反馈框,不适合混合中英文的评论区。如果业务要求中英文都触发句首大写,必须后端统一处理,前端只做体验提示。
把任意文章或文档内容转换成精美的全屏翻页 HTML 演示文件(幻灯片风格)。当用户发来一篇文章、文档链接、Markdown 内容、或粘贴的文本,并且希望生成演示用的 HTML 时触发。支持任意内容来源:iWiki 链接、KM 链接、本地文件路径、直接粘贴的文本。生成的 HTML 文件保存到本地工作区,并通过企微直接发送给用户。触发词示例:帮我把这篇文章做成PPT、转成演示文档、生成HTML幻灯片、做个演示、转成可以演示的格式、article to deck、make a slide。
另外,type="search" 或 type="email" 下写 autocapitalize="sentences" 无效 —— 浏览器会按类型强制覆盖,前者禁用所有大写,后者默认 none。
autocapitalize="characters" 不等于 value 全大写
这个值只是让键盘显示为 Caps Lock 开启状态,用户按 a 会输出 A,但若粘贴进 sku-abc123,value 仍是原样小写。它不劫持、不转换、不监听,纯属键盘 UI 提示。
如果你需要提交时强制全大写,JS 方案比依赖它可靠得多:
form.addEventListener('submit', e => {
const input = e.target.querySelector('[data-uppercase]');
if (input) input.value = input.value.toUpperCase();
});
别用 text-transform: uppercase 替代 —— 它只改样式,input.value 读出来还是小写,后端收到的也一样。
最易被忽略的一点:autocapitalize 对中文拼音输入法完全无效。用户切到拼音模式,无论你设什么值,键盘都不响应。它只在英文键盘状态下起作用。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










