前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
首页程序员面试题库HTML autocomplete token 地址卡片字段
HTML表单与输入

autocomplete 属性里的 token 怎么组合才能让浏览器正确填入地址和银行卡?

autocomplete 的值是一串空格分隔的 token,按顺序可以包含分区前缀(shipping 或 billing)、联系类型和具体字段名。浏览器根据这些 token 从已保存的信息里找到对应值填入。写对了,用户一点就能填满整个地址表单。

前端进阶之旅 · 一题精讲更新于 2026.09.29
HTML#表单与输入#表单
先看核心答案读代码示例
理解线索

token 的三层结构

  1. 分区前缀shipping 或 billing,告诉浏览器这组字段属于哪个地址
  2. 联系类型可选的 home、work、mobile 等,用于区分同一人的多个联系方式
  3. 字段名具体的数据类型,比如 street-address、postal-code、cc-number

token 的顺序不能乱,分区前缀必须在最前面,字段名必须在最后面。写成 street-address shipping 是无效的。

核心回答

先记住这个答案

autocomplete 属性的值不是简单的 on 或 off,而是由一组标准 token 拼成的字符串,用空格分隔。比如 autocomplete="shipping street-address" 告诉浏览器这个输入框要填收货地址的街道信息。浏览器会根据 token 从已保存的地址、联系方式或银行卡信息里找到匹配项,提示用户一键填入。

  • autocomplete 的 token 用空格分隔
  • shipping 与 billing 区分地址组
  • 卡号用 cc-number,到期用 cc-exp
  • 写错 token 名浏览器不会报错,只是静默不填

地址表单的 token 怎么写

一个电商结账页通常有收货地址和账单地址两组字段。如果两组都写 autocomplete="street-address",浏览器分不清该填哪个。这时用 shipping 和 billing 前缀来区分。

收货地址和账单地址并存HTML
<!-- 收货地址:shipping 前缀 -->
<input name="ship-street" autocomplete="shipping street-address" />
<input name="ship-city" autocomplete="shipping address-level2" />
<input name="ship-province" autocomplete="shipping address-level1" />
<input name="ship-zip" autocomplete="shipping postal-code" />

<!-- 账单地址:billing 前缀 -->
<input name="bill-street" autocomplete="billing street-address" />
<input name="bill-city" autocomplete="billing address-level2" />

address-level1 对应省或州,address-level2 对应市或城市。这些名字是 HTML 标准定义的,不能自己编。name 属性可以随便取,浏览器靠的是 autocomplete token 来识别字段含义。

银行卡字段的 token

支付表单的卡号、姓名、有效期各有专门的 token。浏览器在用户同意后才会填入,通常还会要求系统级验证(指纹、面容或密码)。

支付表单的写法HTML
<input name="cardname" autocomplete="cc-name" />
<input name="cardnumber" autocomplete="cc-number" inputmode="numeric" />
<input name="expiry" autocomplete="cc-exp" />
<input name="cvc" autocomplete="cc-csc" />

cc-exp 是到期日,格式是 MM/YY 或 MM/YYYY,具体取决于浏览器。如果想分开月份和年份,可以用 cc-exp-month 和 cc-exp-year。cc-csc 是卡背面的安全码,浏览器一般不会保存这个值。

回答前,多想一步

容易答错的地方

以为 autocomplete="on" 就够了
on 只是告诉浏览器「你可以自动填充」,但浏览器得自己猜这个字段是什么。猜错了就会把邮箱填进地址栏。写明确的 token 比如 email、tel、street-address,浏览器才能精准匹配。
token 拼写错了不会报错
把 street-address 写成 streetAddress 或 address,浏览器不会抛异常,只是当作不认识的值,跳过这个字段不填。开发时不容易发现,上线后用户抱怨「自动填充不好使」才知道。
试着用自己的话回答

面试官还会怎么问?

autocomplete="off" 真的能阻止浏览器填充吗?

很多浏览器或密码管理器仍会在登录表单提供账号密码填充,不能把 off 当成强制禁令。一次性验证码应使用标准 token autocomplete="one-time-code",它告诉浏览器这里期待验证码,支持的浏览器甚至可以从符合格式的短信中提取并填入;它不是“阻止自动填充”的非标准技巧。

name 属性和 autocomplete 都能影响自动填充,优先级是什么?

规范中的 autocomplete token 明确表达字段用途,浏览器也可能结合 name、id 等信息及自身策略判断。不能把各浏览器的填充算法概括成一条固定优先级;能确定字段含义时,显式写正确的 token 更可靠。

同一页面有多个表单,token 会冲突吗?

不能只靠 <form> 边界假定浏览器一定把同名字段分开。同一组 token 可能被当成相同的填充用途;收货与账单地址用 shipping、billing 区分,同一页面若还有两套同类型地址,可在最前面加不同的 section-* token 给它们命名。

从一道题,走向一组知识

把知识连起来

表单与输入

表单里的 autofocus 会在什么时候抢走焦点?

autofocus 决定页面加载后光标落在哪个字段,配合 autocomplete 可以让用户更快完成表单。

表单与输入

表单里的 button 不写 type 为什么会提交?

表单里的 <button> 默认会触发提交,填完自动补全的内容后误触提交是常见问题。

参考资料

  • HTML:表单与输入参考资料

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 地址表单的 token 怎么写
  3. 银行卡字段的 token
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑