前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
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 热点
旧版
首页程序员面试题库radio checkbox 区别 name 分组
HTML语义与文档

单选和复选框怎么分组,name 起什么作用?

type="radio" 适合一组互斥选项,同一表单里相同 name 的单选按钮组成一组,一次通常只能选一个。type="checkbox" 表示可独立勾选的选项,多项可同时选中。name 还决定提交时的字段名,但不能单独提供整组选项的可见标题;相关控件可用 <fieldset> 与 <legend> 说明问题。

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

同名 radio 互斥,checkbox 独立

  1. radio同一表单里同名选项互斥,适合一次只选一个
  2. checkbox各项可独立勾选,适合多个通知渠道
  3. name决定分组与提交字段;不同问题不要共用一个名称

不同 name 会形成不同组,不能完成同一道单选题的互斥。

核心回答

先记住这个答案

互斥答案用同名的 radio 组成一组,多选答案用独立的 checkbox;浏览器提交时只发送符合成功控件规则的选中项。若问题是“你使用哪些框架”,多个勾选值可能需要同名字段;若是“主要使用哪一个”,单选更符合任务。控件的 name 管分组与提交,给整组起可见名称还要用 <fieldset> 和 <legend>。

  • 同名 radio 构成单选组
  • checkbox 可多项勾选
  • name 还是提交字段名
  • fieldset 可说明整组问题

配送方式与通知偏好

问卷里“配送方式”只能选快递或自提,用同名 radio;“希望收到哪些通知”可同时选短信和邮件,用 checkbox。每个选项都要有对应 <label>,点击文字也能选中。把 radio 写成不同 name,用户就会发现两个配送方式可以同时选;把 checkbox 当成 radio,又会无意限制多选需求。

配送单选与通知复选HTML
<fieldset>
  <legend>配送方式</legend>
  <label><input type="radio" name="delivery" value="post">快递</label>
  <label><input type="radio" name="delivery" value="pickup">自提</label>
</fieldset>
<label><input type="checkbox" name="notify" value="sms">短信通知</label>

同组 radio 的选择状态互相排斥,组别由表单归属与 name 决定。 示例里两项配送方式共用 name="delivery",浏览器才知道它们互斥;通知选项用另一个 name,不会影响配送选择。若两个 radio 的 name 不同,就可能同时被选中,表面看起来仍像单选按钮却失去题意。反过来,多个可独立选的通知方式若全写成 radio,用户就只能留一个。先确定业务允许几项,再决定控件,而不是先照设计稿画圆点或方框。

同名 radio 互斥,checkbox 独立

checkbox 则各自维护 checked,即使共享一个提交字段名,也仍可同时勾选;提交时可能出现多个同名值,服务端要按约定解析。未选中的 radio 和 checkbox 一般不会作为成功控件提交,因此服务端不能把“没有这个字段”误当成合法的某个选择。fieldset 和 legend 让题目与选项形成语义组。

同名 radio 的互斥关系属于同一个表单范围;复制组件时若所有单选题都误用 name="choice",第一题选项可能会把第二题的选中状态取消。给每道题分配不同 name,并用 <legend> 提问,才能让视觉和读屏用户都知道这组控件在回答什么。复选框虽然能多选,也要决定服务端如何接收重复字段或数组值。

“其他”选项需要额外填写时,单选按钮负责选择是否为其他,文本输入负责收集具体内容;不能把输入框直接当成一个神奇的单选值。选中状态改变后还应同步启用或禁用附属输入,服务端根据选中的选项判断是否接收额外字段。这样比提交所有字段后靠空字符串猜用户意图更清楚。

回答前,多想一步

容易答错的地方

以为 radio 只因 type 就自动互斥
不同 name 会形成不同组,不能完成同一道单选题的互斥。
用 checkbox 实现只能选一个的题
即使脚本强行取消其他项,语义仍不如 radio 清楚。
试着用自己的话回答

面试官还会怎么问?

多个 checkbox 用同一个 name 会怎样?

它们仍可独立选中,提交时可能带多个同名字段值。

没选任何选项会提交什么?

未选中的 radio 与 checkbox 通常不会提交对应字段,服务端应处理缺失。

为什么需要 fieldset?

它把一组相关控件和题目关联起来,读屏用户能更清楚地理解选项上下文。

从一道题,走向一组知识

把知识连起来

语义与文档

label for 怎样关联输入框?不写会少什么?

每个 radio、checkbox 都应有对应 label,让文字可点击且可读。

语义与文档

为什么要给 html 写 lang?它会自动改变文字方向吗?

选项文字的语言会影响读屏发音,混合语言可局部设置 lang。

参考资料

  • HTML:语义与文档参考资料

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

本题目录
  1. 先记住这个答案
  2. 配送方式与通知偏好
  3. 同名 radio 互斥,checkbox 独立
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

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

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