首页 > 解决方案 > 检查所有单选按钮是否为真

问题描述

我有 8 个(4 个是 + 4 个否)单选按钮,最后一对按钮是“以上所有(是/否)”。如何检查是否所有收音机 (1-3) YES 都被选中,以便我可以将最后一个按钮设置为 YES?

  1. 是 否 考试 A
  2. 是 否 考试 B
  3. 是 否 考试 C
  4. 是 否 以上都是

这是我糟糕的尝试(工作),但我知道它写得不好

//EXAMS
<input type="radio" class="yes-radio" name=""> YES
<input type="radio" class="no-radio" name=""> NO
..
..

//ALL OF THE ABOVE
<input type="radio" class="yes-radio-all" name=""> YES
<input type="radio" class="no-radio-all" name=""> NO


//inside click event
        var totalyes = $('.yes-radio').length;
        var totalno = $('.yes-radio').length;
        var yes = $('.yes-radio:checked').length;
        var no = $('.no-radio:checked').length;

        if (totalyes == yes) {
            $('.yes-radio-all').attr('checked', true);
        }

        if (totalno == no) {
            $('.no-radio-all').attr('checked', true);
        }

我简化了而不是实际代码,但你会明白我的意思。我认为必须有某种循环或 foreach 可以解决我的问题。

谢谢!

标签: javascriptjquery

解决方案


您可以将 jQuery 选择转换为数组,然后使用标准every()方法。

if ($('.yes-buttons').get().every(button => button.checked)) {
  $('.yes-radio-all').prop('checked', true);
} else if ($('.no-buttons').get().every(button => button.checked)) {
  $('.no-radio-all').prop('checked', true);
}

推荐阅读