autocorrect属性在移动端无效,因它非html标准且已被ios弃用;应改用spellcheck="false"和autocapitalize="none"组合控制自动纠错与首字母大写,并辅以autocomplete="off"和随机name避免联想。

autocorrect属性在移动端根本不起作用
HTML标准里压根没有 autocorrect 这个全局属性,它不是规范的一部分,而是早期 WebKit(Safari/iOS)私有扩展,且从 iOS 12 起已被弃用。你在 <input> 上写 autocorrect="off",现代 iOS Safari 会直接忽略——既不报错,也不生效。
真正起效的是 autocapitalize + spellcheck 组合
要禁用 iOS/Android 键盘的自动纠错和首字母大写,得靠两个实际被支持的属性协同控制:
-
spellcheck="false":明确关闭拼写检查(影响纠错底层逻辑) -
autocapitalize="none":阻止键盘自动切换大写模式(间接减少纠错触发场景)
示例:
<input type="text" spellcheck="false" autocapitalize="none">
注意:autocapitalize 的合法值是 "none"、"sentences"、"words"、"characters",别写 "off" 或 false(无效)。
type="text" 场景下还得防 autocomplete 干扰
某些输入框(比如验证码、临时 token)即使关了拼写检查,iOS 仍可能因 autocomplete 值触发联想或纠错。稳妥做法是叠加:
-
autocomplete="off"(虽非强制,但多数浏览器尊重) - 加个无意义的随机
name属性(如name="field_abc123"),避免被识别为常见字段(email/password)
完整写法:
<input type="text" spellcheck="false" autocapitalize="none" autocomplete="off" name="field_7x9q">
textarea 和 contenteditable 元素同样适用
上述规则对 <textarea></textarea> 和带 contenteditable="true" 的元素也成立。但要注意:spellcheck="false" 在 <div contenteditable> 上必须显式声明,否则默认为 <code>true;而 <textarea></textarea> 默认就是 false,不过显式写上更可靠。
容易被忽略的一点:这些属性只影响键盘行为,不改变浏览器内置的语法高亮或开发者工具里的拼写波浪线——那属于编辑器层,和运行时无关。











