radiogroup 属性在 html 中基本不可用,因仅定义于已废弃的 标签且浏览器完全不支持;html 单选分组唯一有效机制是 name 属性值相同。

radiogroup 属性在 HTML 原生中**基本不可用**——主流浏览器(Chrome、Firefox、Safari、Edge)均不支持它,且 <command></command> 标签本身已被废弃,实际项目中不能依赖该属性实现单选逻辑。
为什么 radiogroup 不能用于 HTML 单选按钮组
很多人看到文档里写“radiogroup 用于分组 radio”,就去给 <input type="radio"> 加这个属性,结果发现完全没效果。原因很直接:
-
radiogroup只定义在已废弃的<command></command>标签上,且仅适用于type="radio"的<command></command>元素 -
<input type="radio">**根本不识别radiogroup属性**,加了也当不存在 - 所有现代浏览器对
<command></command>的支持度为 0,MDN 和 CanIUse 均标记为“非标准、不推荐、已弃用”
HTML 中真正起作用的单选分组机制是 name
原生单选按钮的互斥行为,唯一且必须依赖的是 name 属性值相同。这是 HTML 规范强制要求的,也是浏览器唯一认的分组依据:
- 同一组 radio 必须共享相同的
name值,例如name="theme" - 不同
name值的 radio 永远不会互相影响,哪怕它们视觉上挨得很近 -
name值区分大小写,theme和Theme是两组 - 表单提交时,只有被选中的那个 radio 的
name=value会被发送,其余同名未选中的不参与提交
示例:
<input type="radio" name="size" value="s"> Small<br><input type="radio" name="size" value="m"> Medium<br><input type="radio" name="size" value="l"> Large<br><!-- 这个不在同一组,name 不同 --><input type="radio" name="color" value="red"> Red
容易踩的坑:混淆 radiogroup 与 ARIA 的 role="radiogroup"
有人把 radiogroup 属性和 ARIA 的语义化写法搞混,以为加了就能提升可访问性。其实:
- ARIA 正确写法是给容器加
role="radiogroup",再给每个 radio 加role="radio"和aria-checked - 这纯属辅助技术提示,**不改变任何原生行为**;互斥逻辑仍必须靠
name维持 - 若只加 ARIA 角色却不设
name,键盘操作(如 Tab + 空格)会失效,屏幕阅读器也可能报错“无有效选项” - 更稳妥的做法:用
<fieldset></fieldset>+<legend></legend>包裹name一致的 radio,天然具备语义和聚焦逻辑
Android 或 Material-UI 中的 RadioGroup 是另一套东西
如果你在查资料时看到 Android 的 RadioGroup 控件或 MUI 的 RadioGroup 组件,注意它们和 HTML 的 radiogroup 属性毫无关系:
- Android 的
RadioGroup是 ViewGroup 容器,靠 Java/Kotlin 代码控制选中状态,底层不生成name属性 - MUI 的
RadioGroup是 React 封装组件,内部用name模拟原生行为,但本质是受控组件,状态全由 React 管理 - 这些框架级的 “RadioGroup” 名字只是借用了概念,不是 HTML 标准的一部分
真正在 HTML 页面里做单选,别找 radiogroup,盯死 name —— 它不起眼,但它是唯一生效的开关。其他所有属性或角色,都只是锦上添花,不能替代它。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











