autocorrect="off"无效因它是非标准提示而非指令,仅部分移动端生效;需配合spellcheck="false"和autocapitalize="none",且值必须小写;Android/iOS系统设置优先级更高。

autocorrect 属性设为 off 无效?先确认浏览器支持范围
Chrome、Edge 和 Safari(iOS/macOS)支持 autocorrect,但它是非标准属性,仅在部分输入场景下生效——主要影响移动端软键盘行为。桌面端 Chrome 完全忽略它;Firefox 不支持;Android 原生键盘对它的响应也极不稳定。所以别指望靠它“彻底关掉英文拼写修正”,它只是个提示,不是指令。
input 和 textarea 都要加,且必须用小写字符串值
常见错误是写成 autocorrect="false" 或 autocorrect="disabled",这不会生效。规范只认两个字符串:"on" 和 "off",且必须小写、无空格:
<input type="text" autocorrect="off" spellcheck="false"> <textarea autocorrect="off" spellcheck="false"></textarea>
注意:spellcheck="false" 是更关键的配合项,它禁用浏览器内置拼写检查(包括红色波浪线和右键建议),而 autocorrect 只影响软键盘是否自动替换单词。
iOS Safari 必须同时禁用 autocapitalize 和 autocorrect
iOS 键盘会把“首字母大写 + 自动纠错”联动处理。哪怕 autocorrect="off",只要 autocapitalize="sentences"(默认值)开着,它仍可能强行修正你输错的单词。稳妥做法是:
立即学习“前端免费学习笔记(深入)”;
autocorrect="off"autocapitalize="none"spellcheck="false"
三者缺一不可。例如密码输入框或代码编辑区域,漏掉 autocapitalize="none",用户输 recieve 仍可能被改成 receive。
真正想禁用所有干扰?用 contenteditable + 输入监听兜底
当上述属性在某些 Android 键盘或 WebView 中完全失效时,只能降级处理:把 <input> 换成 <div contenteditable="true">,并监听 input 事件手动过滤修正结果:
el.addEventListener('input', () => {
const text = el.innerText;
if (text !== el.dataset.lastValue) {
el.innerText = el.dataset.lastValue;
}
});
el.addEventListener('keydown', (e) => {
el.dataset.lastValue = el.innerText;
});
这方法绕过系统输入法干预,但代价是失去原生输入框的无障碍支持、剪贴板行为和表单提交逻辑。只建议用于对输入精度要求极高、且明确知道用户环境(如企业内嵌 WebView)的场景。
最常被忽略的一点:autocorrect 不是开关,而是协商信号;真正起决定作用的是操作系统键盘设置——用户若在 iOS 设置里打开了“自动更正”,网页属性最多只能弱化影响,无法覆盖系统级策略。



















