document.queryselector('input[type="radio"][name="group_name"]:checked') 返回非 null 即表示该组 radio 至少有一个被选中;必须同时限定 type 和 name 以防误匹配,name 含特殊字符需转义或改用 queryselectorall 过滤。

直接看 :checked 伪类有没有匹配到元素,这是最可靠、最轻量的判断方式。别去遍历所有 radio 然后查 checked 属性,也别依赖表单提交时的 value 是否为空——那些都容易漏判或误判。
用 document.querySelector 检查是否存在已选中的 radio
核心逻辑就一句:document.querySelector('input[type="radio"][name="group_name"]:checked')。只要返回非 null,说明该组至少有一个被选中。
- 必须同时限定
type="radio"和name="xxx",否则可能误匹配 checkbox 或其他 name 的 radio - 不能只写
[name="xxx"]:checked,因为没限制 type,万一页面里有同名的 checkbox 就会干扰判断 - 如果 name 带特殊字符(如中括号、点号),要用转义或改用
querySelectorAll+ 循环过滤 - 返回的是 DOM 元素,不是布尔值,所以判断时写
!!el或el !== null,别直接当真值用
jQuery 下用 :checked 配合 .length
如果你项目里用了 jQuery,$('input[type="radio"][name="group_name"]:checked').length > 0 是最常用也最稳的写法。
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
- 注意不要写成
$(':radio[name="group_name"]:checked')——:radio是 jQuery 自定义伪类,兼容性不如原生属性选择器,某些旧版 jQuery 在复杂环境里会漏匹配 - 别用
.val()判断:未选中时.val()返回undefined,但undefined == null为 true,而undefined === null为 false,容易在松散比较中出错 - 避免
if ($(...).val())这种写法:如果某个 radio 的value=""(空字符串),即使它被选中,也会被当成 false
服务端回传后 JS 动态设置选中状态的陷阱
后端渲染 HTML 时,如果靠 JS 赋值 radio.checked = true 来“恢复”用户上次选择,很可能失效。
- DOM 渲染完成前执行 JS,会被 HTML 中的
checked属性覆盖;渲染完成后执行,又可能被浏览器的表单自动恢复机制干扰(比如 Chrome 对autocomplete="on"的处理) - 更稳妥的做法是:服务端直接在对应
<input>标签里输出checked属性,而不是留空再靠 JS 补 - 如果必须用 JS 控制,确保在
DOMContentLoaded后执行,并且确认该 radio 所在组没有其他元素也带checked属性(否则浏览器只认第一个)
真正容易被忽略的点是 name 值的一致性——哪怕多一个空格、大小写不一致、前后缀不统一(比如前端传 q1,后端生成 question_q1),都会导致 :checked 查不到任何元素,最终判定为“未选择”。验证时先用浏览器开发者工具手动查一遍 input[type="radio"][name="xxx"] 能否选中全部目标元素,比写十行逻辑都管用。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










