HTML radio默认不选中,需显式添加checked属性才选中;同组均未设checked时表单提交不发送该字段;required仅校验不自动选中;原生radio不支持取消全部选中,须用其他方案实现无选中状态。

HTML radio 单选框默认就是不选中的——你什么都不用做,它自然就不选中。
不写 checked 属性就是默认不选中
浏览器只看 checked 属性是否存在,不写就代表“未选中”。哪怕你写了 name、value、id,只要没加 checked,加载时就是空白状态。
-
<input type="radio" name="color" value="red">→ 不选中 -
<input type="radio" name="color" value="blue" checked>→ 选中(哪怕只多一个空格,也算存在) -
<input type="radio" name="color" value="green" checked>→ 还是选中(浏览器不解析值)
同一组里多个 radio 都没写 checked,会怎样?
这是合法且常见的场景:用户必须主动点一个才能提交。但要注意,此时表单提交时该 name 对应的字段根本不会出现在请求数据中(不是 null 或空字符串,是压根不发送)。
- 后端收到的数据里可能缺失这个字段,需做好判空处理
- 如果业务逻辑要求“必须选一个”,建议前端加
required属性:<input type="radio" name="plan" value="basic" required> -
required不会自动选中任意一项,只是阻止表单提交,直到用户手动点选
想实现“点击后取消选中”?原生 radio 不支持
W3C 标准规定:单选按钮组必须始终有且仅有一个选中项。所以你不能靠删掉 checked 或设 .checked = false 让整个组变为空。
立即学习“前端免费学习笔记(深入)”;
- 执行
document.querySelector('input[value="red"]').checked = false,若它是当前唯一选中项,浏览器会忽略这次赋值 - 真要支持“无选中”状态,得换方案:
<select></select>、<input type="checkbox">,或加一个value=""的兜底选项(如「暂不选择」) - 框架如 Vue/React 中,可将 v-model / state 绑定为
null或空字符串,配合逻辑隐藏“已选中”的视觉反馈
最容易被忽略的一点:name 值大小写敏感、空格敏感、前后端必须完全一致;拼错一个字符,那组 radio 就彻底失去互斥性,多个都可能被提交。



















