前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
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 radio 单选按钮 name 分组行为
HTML表单与输入

单选框靠 name 怎样分组,多个 checked 谁生效?

同一表单里、同名的 type="radio" 会互斥,选中一个就取消同组其他项。初始标记里若多个都有 checked,通常最后一个生效;应只给一个默认项。

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

名字定义单选组

  1. name把同一表单中的单选项归组
  2. checked指定初始选中状态
  3. value提供提交给服务端的组值

组的范围还受表单所有者影响,不能只看页面上是否写了相同 name。

核心回答

先记住这个答案

一组单选按钮要使用相同的 name,浏览器才会让它们互斥。选择“快递”后,“自提”会自动取消;提交时以该组名字传递被选中项的 value。同组多个单选项都写 checked 作为初始状态时,解析到后面的选中项通常覆盖前面的,所以标记里应只给一个默认项。

  • 同组单选框共用 name
  • 一次只能选中一个
  • 多个初始 checked 通常最后一个生效
  • 提交的是选中项的 value

配送方式要共享一个名字

订单表单里“快递”和“自提”是同一个问题的两个答案,应该使用相同 name、不同 value。标签文本面向用户,value 面向提交数据,两者不必相同。

两个互斥选项HTML
<fieldset>
  <legend>配送方式</legend>
  <label><input type="radio" name="delivery" value="express" checked> 快递</label>
  <label><input type="radio" name="delivery" value="pickup"> 自提</label>
</fieldset>

用户未操作时默认快递;改选自提后,该组只会有一个选中项。<fieldset> 和 <legend> 进一步说明这些按钮回答同一个问题,辅助技术用户也更容易理解分组。 如果同页还有“付款方式”,它必须使用另一组名字。误把付款选项也写成 delivery,选择付款方式就会取消配送方式。

默认值与必填校验

多个 checked 并不能表示允许多选。解析页面时,同组只有一个最终选中项;后出现的标记可能覆盖前面的初始状态。若要让用户明确选择,可以不设默认项,并给组中的一个单选项加 required 约束。

用脚本动态创建或移动单选框时,还要考虑其表单所有者。相同 name 但属于不同表单的单选按钮,不应当成一组业务答案。

同一组单选按钮必须共用 name,不同组则要用不同名字。比如配送方式与支付方式都写 name="method",用户选了支付宝后配送选项会被取消,提交数据也只剩一组值。required 用在一组中的某个单选按钮上,就要求这一组至少选中一个;不需要给每一项都重复标。服务端也要检查提交值在允许列表内,因为客户端可以绕过页面直接传入不存在的选项。

回答前,多想一步

容易答错的地方

不同问题复用相同的 name
浏览器会把它们当一组互斥选项,导致用户填一题时取消另一题。
以为多个 checked 就能多选
radio 是单选。需要多个答案时使用复选框,并用合适的数据结构收集值。
试着用自己的话回答

面试官还会怎么问?

没有选中项时会提交什么?

该组通常没有对应的成功值提交;若必须作答,用 required 并提供明确提示。

只给其中一个 radio 写 required 有用吗?

单选组的必填校验按同名组处理,任一组成员满足选中条件即可。

为什么推荐 <fieldset>?

它为一组相关控件提供语义容器,<legend> 说明整组问题,比仅靠相邻文字更清楚。

从一道题,走向一组知识

把知识连起来

表单与输入

range 不写 value 时默认是多少,和 number 有何区别?

<input type="range"> 始终有当前值,和单选组的未选中状态不同。

表单与输入

readonly 和 disabled 在表单提交时有什么区别?

disabled 单选项不能操作也不会作为正常提交值。

参考资料

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

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

本题目录
  1. 先记住这个答案
  2. 配送方式要共享一个名字
  3. 默认值与必填校验
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

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

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