首页 > 解决方案 > 多个复选框状态已选中

问题描述

我正在使用淘汰赛Js。有两个复选框。如果未选中任何复选框,则提交按钮将被禁用。可能会有 1 个复选框而不是 2 个复选框。所以我有这样的条件

 if ((self.checkBox1() === true && self.checkBox2() === true) || ($("#checkbox2").length <= 0 && self.checkBox1() === true) || ($("#checkbox1").length <= 0 && self.checkBox2() === true)) {
        $('.submit-btn').attr('disabled', false);

    } else {
        $('.submit-btn').attr('disabled', true);

    }
    return true;
}

这是我创建的Jsfiddle示例。

有没有更好的方法来做到这一点?

标签: javascriptcheckboxknockout.jsknockout-validationknockout-3.0

解决方案


$('.submit-btn').attr('disabled', ![...document.querySelectorAll('[type="checkbox"]')].every(cb=cb.checked)));

在这种情况下,我们检查页面上的所有复选框是否都被选中,一个返回真/假的过程,并使用该值直接更改按钮上的禁用状态。

如果同一页面上也存在非必需复选框的可能性,则对该querySelectorAll('[type="checkbox"]')部分进行小幅改动即可处理:给所需的 CB 一个class="required"( querySelectorAll('.required[type="checkbox"]'),或定位其父容器 (querySelectorAll('#parent [type="checkbox"]'


推荐阅读