autocomplete 是浏览器依据标准值提示填充的语义标记,必须严格匹配如 email、current-password 等规范值;混用、错配或脱离 form 标签将导致失效。

autocomplete 不是“自动填表单”,而是告诉浏览器:这个字段你该记什么、该用什么历史值来建议。配错就等于把密码框标成 autocomplete="name"——浏览器真会拿你名字去填密码。
哪些值能用,哪些千万别乱写
浏览器只认标准值,比如 email、current-password、new-password、tel、street-address。非标准值如 user_name 或 myEmail 会被忽略,等于没写。
-
off不代表“禁用自动填充”,只是“不提供语义提示”,现代浏览器仍可能根据name或type猜测填充 - 密码类必须严格区分:
current-password用于登录,new-password用于注册/改密,混用会导致 Chrome 拒绝保存新密码 -
on已废弃,不要用;也不要用空字符串autocomplete="",行为不可控
input type 和 autocomplete 值必须对得上号
比如 配 autocomplete="email" 才生效;若写成 autocomplete="username",Safari 可能直接跳过建议。
-
type="text"+autocomplete="email":可行,但不如原生type="email"触发率高 -
type="password"必须配current-password或new-password,配off也无法阻止某些浏览器在密码管理器弹窗里显示该字段 - 地址类字段(如省市区)需拆解:
autocomplete="address-level1"(省)、autocomplete="address-level2"(市),不能全塞进一个autocomplete="shipping address"
Chrome 和 Safari 对 autocomplete 的容忍度差很多
Safari 更依赖 autocomplete 值的准确性,Chrome 则更爱结合 name、id、前后 DOM 结构猜。所以测试不能只看 Chrome。
- 如果表单用了 JavaScript 动态生成
input,要确保插入 DOM 后再设置autocomplete属性,否则 Safari 可能不识别 - React/Vue 中用
v-model或value绑定时,别忘了显式写autocomplete——框架不会帮你补 - 表单有多个同类型字段(如两个邮箱),靠
autocomplete区分优先级:autocomplete="email"(主邮箱)和autocomplete="home email"(备用,部分浏览器支持)
最常被忽略的一点:autocomplete 生效的前提是表单有 标签且提交方式合理。单独的 input 脱离表单上下文,哪怕属性写对了,浏览器也大概率不触发建议。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











