Javascript 根据复选框,选择全部

Javascript 根据复选框,选择全部,javascript,jquery,checkbox,Javascript,Jquery,Checkbox,我有以下“选择所有复选框”和“依赖复选框”的功能,但它没有按我所希望的那样工作。 1.如果选择“全选”,则“受控”复选框将保持禁用状态 2.当使用“控制器”启用“受控”复选框,然后使用“选择所有”时,“受控”复选框将保持活动状态。我需要它们在未选中时处于非活动状态 我试图创建if语句(注释)来解决这个问题,但它没有按预期工作。是否有其他解决方案,或者最好在取消选中“全选”复选框后重置复选框?在重置的情况下,我只需要重置一组复选框,而不是整个表单 $('form').ready(funct

我有以下“选择所有复选框”和“依赖复选框”的功能,但它没有按我所希望的那样工作。 1.如果选择“全选”,则“受控”复选框将保持禁用状态 2.当使用“控制器”启用“受控”复选框,然后使用“选择所有”时,“受控”复选框将保持活动状态。我需要它们在未选中时处于非活动状态

我试图创建if语句(注释)来解决这个问题,但它没有按预期工作。是否有其他解决方案,或者最好在取消选中“全选”复选框后重置复选框?在重置的情况下,我只需要重置一组复选框,而不是整个表单

    $('form').ready(function() {
    var $check1 = $('input[id*=selectAll]'),
        $check2 = $('tr th :checkbox'),
        $checkAll = $check1.add($check2);
    $checkAll.on('click keydown', function () {
        var checkedStatus = this.checked,
            $selected1 = $(this).closest(".formFieldWrapper").find('input:checkbox:not(:first):not([data-leader])'),
            $selected2 = $(this).closest("table").find('tr td :checkbox'),
            $selectedAll = $selected1.add($selected2);
            $selectedAll.each(function () {

           // if($checkAll.prop('checked', true)) {
            $(this).prop('checked', checkedStatus)  //.prop('disabled', false)
           // } else {
           // $(this).prop('checked', checkedStatus);
           // $checkAll.prop('checked', false);
           // $('.controlled').prop('disabled', true)
           // }   

        });
        $selectedAll.on('click keydown', function(){
        $checkAll.prop('checked', false) 
        });
    });
});

$('.controlled').prop('disabled', true);
$('.controller').click(function () {
    var $this = $(this),
        $inputs = $($this.data('target'));
    $inputs.prop('disabled', !this.checked);
    if (!this.checked) {
        $inputs.prop('checked', false);
    }
});
解决方案:

 var $check1 = $('input[id*=selectAll]'),
        $check2 = $('tr th :checkbox'),
        $checkAll = $check1.add($check2);

    $checkAll.on('click keydown', function () {
        var checkedStatus = this.checked,
            $selected1 = $(this).closest(".formFieldWrapper").find('input:checkbox:not(:first):not([data-leader])'),
            $selected2 = $(this).closest("table").find('tr td :checkbox'),
            $selectedAll = $selected1.add($selected2);

        $selectedAll.each(function () {
            $(this).prop('checked', checkedStatus);

            if (checkedStatus === true) {
                $('.controlled').prop('disabled', false);
            } else {
                $('.controlled').prop('disabled', true);
            }

        });

        $selectedAll.on('click keydown', function () {
            $checkAll.prop('checked', false)
        });
    });


$('.controlled').prop('disabled', true);
$('.controller').click(function () {
    var $this = $(this),
        $inputs = $($this.data('target'));

    $inputs.prop('disabled', !this.checked);
    if (!this.checked) {
        $inputs.prop('checked', false);
    }
});