用对WHATWG标准小写autocomplete值才能触发浏览器自动填充,如name、email、tel、street-address等,并需配合type属性、置于form内、字段曾被聚焦且表单成功提交过。

直接写对标准值,浏览器才会自动填;写错大小写、拼写或脱离表单,等于没写。
用对 autocomplete 值,填得快又准
浏览器只认 WHATWG 规范里的小写标准词,比如:
-
姓名:用
autocomplete="name"(不拆 first/last),浏览器匹配用户保存的完整姓名 -
邮箱:必须是
autocomplete="email","user-email"或"mail"都无效 -
手机号:用
autocomplete="tel";带区号可拆为tel-country-code+tel-national -
地址:街道用
street-address,省用address-level1,市用address-level2,邮编用postal-code -
收货地址:所有字段加
shipping前缀,如shipping street-address,否则可能填错成账单地址
配合 type 和表单结构,才能真正生效
autocomplete 不是独立起作用的,它要和其它属性协同:
-
type 属性必须匹配:比如
type="email"+autocomplete="email"才能唤出邮箱键盘并触发填充;type="text"即使写了autocomplete="email",效果也不稳定 - 必须在 :浏览器基本只对语义化表单内的字段启用智能填充
- 字段需被聚焦过且表单至少成功提交一次:这是浏览器记录并复用数据的前提
-
避免动态插入后 JS 赋值:React/Vue 中 useEffect 或 mounted 里创建 input 并设
value = "",会干扰浏览器识别时机
密码和验证码等特殊字段,关得准才不误事
不是所有场景都要“开”,关键是要按需关闭:
-
密码字段:登录用
autocomplete="current-password",注册或改密用autocomplete="new-password";别用off,现代浏览器(Chrome ≥76、Safari)会忽略它 -
验证码:用
autocomplete="one-time-code",且表单中要有<button type="submit"></button>(哪怕隐藏),页面必须 HTTPS,短信模板也要合规 -
其他敏感或一次性字段:如动态令牌、搜索关键词、业务编号,直接加
autocomplete="off"即可,这个值在单个 input 上有效,不影响其他字段
别漏掉 label 和 name,兼容性更稳
autocomplete 是增强项,不是唯一依赖:
- 每个
<input>都应有显式<label for="id"></label>,不能只靠 placeholder 提示 -
name值建议与后端字段一致(如name="billing_email"),同时配autocomplete="email" - 对于下拉选择(
<select></select>),它本身不支持 autocomplete;如需自动恢复选项,得用 localStorage 自己存取,或改用带 autocomplete 的 input + 自定义下拉(combobox)


















