Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 检查是否选中但未禁用一组复选框_Jquery_Html_Checkbox - Fatal编程技术网

Jquery 检查是否选中但未禁用一组复选框

Jquery 检查是否选中但未禁用一组复选框,jquery,html,checkbox,Jquery,Html,Checkbox,此代码: if ($('[id*="cat' + cat_id + '_sk"]').is(':checked') && $('[id*="cat' + cat_id + '_sk"]').not(':disabled')) { $('[id*="cat' + cat_id + '_sk"]').prop('checked', false); } else if ($('[id*="cat' + cat_id + '_sk"]').not(':checked')

此代码:

if ($('[id*="cat' + cat_id + '_sk"]').is(':checked') && $('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
        $('[id*="cat' + cat_id + '_sk"]').prop('checked', false);
} else if ($('[id*="cat' + cat_id + '_sk"]').not(':checked') && $('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
        $('[id*="cat' + cat_id + '_sk"]').prop('checked', 'checked');
}   
似乎忽略了if条款的第二部分;如果选中复选框,我希望它被忽略

我也试过用前面的
是(':disabled)
,也尝试了一个
布尔值
!(元素)。道具(“禁用”)--所有这些都具有相同的效果

上面的代码肯定会被调用,因为所有复选框都会切换为选中状态——问题是无法忽略禁用的复选框


我的逻辑错了吗?

你应该使用
!对象为(“:选中”)
,示例:

if ($('[id*="cat' + cat_id + '_sk"]').is(':checked') && $('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
     $('[id*="cat' + cat_id + '_sk"]').prop('checked', false);
} else if (!$('[id*="cat' + cat_id + '_sk"]').is(':checked') && $('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
     $('[id*="cat' + cat_id + '_sk"]').prop('checked', 'checked');
}   
if ($('[id*="cat' + cat_id + '_sk"]').is(':checked')) {
    if ($('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
         $('[id*="cat' + cat_id + '_sk"]').prop('checked', false);
    } 
} else {
    if ($('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
         $('[id*="cat' + cat_id + '_sk"]').prop('checked', 'checked');
    }   
}
另一个例子是,如果您想在选中复选框后进入未选中复选框,只需将逻辑分开,例如:

if ($('[id*="cat' + cat_id + '_sk"]').is(':checked') && $('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
     $('[id*="cat' + cat_id + '_sk"]').prop('checked', false);
} else if (!$('[id*="cat' + cat_id + '_sk"]').is(':checked') && $('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
     $('[id*="cat' + cat_id + '_sk"]').prop('checked', 'checked');
}   
if ($('[id*="cat' + cat_id + '_sk"]').is(':checked')) {
    if ($('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
         $('[id*="cat' + cat_id + '_sk"]').prop('checked', false);
    } 
} else {
    if ($('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
         $('[id*="cat' + cat_id + '_sk"]').prop('checked', 'checked');
    }   
}

你应该使用
!对象为(“:选中”)
,示例:

if ($('[id*="cat' + cat_id + '_sk"]').is(':checked') && $('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
     $('[id*="cat' + cat_id + '_sk"]').prop('checked', false);
} else if (!$('[id*="cat' + cat_id + '_sk"]').is(':checked') && $('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
     $('[id*="cat' + cat_id + '_sk"]').prop('checked', 'checked');
}   
if ($('[id*="cat' + cat_id + '_sk"]').is(':checked')) {
    if ($('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
         $('[id*="cat' + cat_id + '_sk"]').prop('checked', false);
    } 
} else {
    if ($('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
         $('[id*="cat' + cat_id + '_sk"]').prop('checked', 'checked');
    }   
}
另一个例子是,如果您想在选中复选框后进入未选中复选框,只需将逻辑分开,例如:

if ($('[id*="cat' + cat_id + '_sk"]').is(':checked') && $('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
     $('[id*="cat' + cat_id + '_sk"]').prop('checked', false);
} else if (!$('[id*="cat' + cat_id + '_sk"]').is(':checked') && $('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
     $('[id*="cat' + cat_id + '_sk"]').prop('checked', 'checked');
}   
if ($('[id*="cat' + cat_id + '_sk"]').is(':checked')) {
    if ($('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
         $('[id*="cat' + cat_id + '_sk"]').prop('checked', false);
    } 
} else {
    if ($('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
         $('[id*="cat' + cat_id + '_sk"]').prop('checked', 'checked');
    }   
}

你应该使用
!对象为(“:选中”)
,示例:

if ($('[id*="cat' + cat_id + '_sk"]').is(':checked') && $('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
     $('[id*="cat' + cat_id + '_sk"]').prop('checked', false);
} else if (!$('[id*="cat' + cat_id + '_sk"]').is(':checked') && $('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
     $('[id*="cat' + cat_id + '_sk"]').prop('checked', 'checked');
}   
if ($('[id*="cat' + cat_id + '_sk"]').is(':checked')) {
    if ($('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
         $('[id*="cat' + cat_id + '_sk"]').prop('checked', false);
    } 
} else {
    if ($('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
         $('[id*="cat' + cat_id + '_sk"]').prop('checked', 'checked');
    }   
}
另一个例子是,如果您想在选中复选框后进入未选中复选框,只需将逻辑分开,例如:

if ($('[id*="cat' + cat_id + '_sk"]').is(':checked') && $('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
     $('[id*="cat' + cat_id + '_sk"]').prop('checked', false);
} else if (!$('[id*="cat' + cat_id + '_sk"]').is(':checked') && $('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
     $('[id*="cat' + cat_id + '_sk"]').prop('checked', 'checked');
}   
if ($('[id*="cat' + cat_id + '_sk"]').is(':checked')) {
    if ($('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
         $('[id*="cat' + cat_id + '_sk"]').prop('checked', false);
    } 
} else {
    if ($('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
         $('[id*="cat' + cat_id + '_sk"]').prop('checked', 'checked');
    }   
}

你应该使用
!对象为(“:选中”)
,示例:

if ($('[id*="cat' + cat_id + '_sk"]').is(':checked') && $('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
     $('[id*="cat' + cat_id + '_sk"]').prop('checked', false);
} else if (!$('[id*="cat' + cat_id + '_sk"]').is(':checked') && $('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
     $('[id*="cat' + cat_id + '_sk"]').prop('checked', 'checked');
}   
if ($('[id*="cat' + cat_id + '_sk"]').is(':checked')) {
    if ($('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
         $('[id*="cat' + cat_id + '_sk"]').prop('checked', false);
    } 
} else {
    if ($('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
         $('[id*="cat' + cat_id + '_sk"]').prop('checked', 'checked');
    }   
}
另一个例子是,如果您想在选中复选框后进入未选中复选框,只需将逻辑分开,例如:

if ($('[id*="cat' + cat_id + '_sk"]').is(':checked') && $('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
     $('[id*="cat' + cat_id + '_sk"]').prop('checked', false);
} else if (!$('[id*="cat' + cat_id + '_sk"]').is(':checked') && $('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
     $('[id*="cat' + cat_id + '_sk"]').prop('checked', 'checked');
}   
if ($('[id*="cat' + cat_id + '_sk"]').is(':checked')) {
    if ($('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
         $('[id*="cat' + cat_id + '_sk"]').prop('checked', false);
    } 
} else {
    if ($('[id*="cat' + cat_id + '_sk"]').not(':disabled')) {
         $('[id*="cat' + cat_id + '_sk"]').prop('checked', 'checked');
    }   
}

jQuery中的.not()只是一个减少当前元素集的过滤器。如果禁用,则不会返回布尔值

jQuery中的.not()只是一个减少当前元素集的过滤器。如果禁用,则不会返回布尔值

jQuery中的.not()只是一个减少当前元素集的过滤器。如果禁用,则不会返回布尔值

jQuery中的.not()只是一个减少当前元素集的过滤器。如果禁用,则不会返回布尔值

这应该更有效一些:

$('[id*="cat' + cat_id + '_sk"]').each(function(elm) {

    var $elm = $(elm);

    if($elm.is(':checked') && !$elm.is(':disabled')) {
         $elm.removeProp('checked');
    }
    else if(!$elm.is(':checked') && !$elm.is(':disabled')) {
         $elm.prop('checked', 'checked');
    }

});

正如A.Wolff上面所说,
.is(“:checked”)
将返回true,即使匹配集中只有一个复选框被选中。您需要使用
每个

循环元素,这应该会更好一些:

$('[id*="cat' + cat_id + '_sk"]').each(function(elm) {

    var $elm = $(elm);

    if($elm.is(':checked') && !$elm.is(':disabled')) {
         $elm.removeProp('checked');
    }
    else if(!$elm.is(':checked') && !$elm.is(':disabled')) {
         $elm.prop('checked', 'checked');
    }

});

正如A.Wolff上面所说,
.is(“:checked”)
将返回true,即使匹配集中只有一个复选框被选中。您需要使用
每个

循环元素,这应该会更好一些:

$('[id*="cat' + cat_id + '_sk"]').each(function(elm) {

    var $elm = $(elm);

    if($elm.is(':checked') && !$elm.is(':disabled')) {
         $elm.removeProp('checked');
    }
    else if(!$elm.is(':checked') && !$elm.is(':disabled')) {
         $elm.prop('checked', 'checked');
    }

});

正如A.Wolff上面所说,
.is(“:checked”)
将返回true,即使匹配集中只有一个复选框被选中。您需要使用
每个

循环元素,这应该会更好一些:

$('[id*="cat' + cat_id + '_sk"]').each(function(elm) {

    var $elm = $(elm);

    if($elm.is(':checked') && !$elm.is(':disabled')) {
         $elm.removeProp('checked');
    }
    else if(!$elm.is(':checked') && !$elm.is(':disabled')) {
         $elm.prop('checked', 'checked');
    }

});
正如A.Wolff上面所说,
.is(“:checked”)
将返回true,即使匹配集中只有一个复选框被选中。您需要使用
每个

这样的东西循环元素吗

上面的代码行是表示是否选中此复选框且未禁用此复选框的逻辑

$(document).ready(function() {
    $('.check').each(function() {
        console.log($(this).attr('disabled'));
        if($(this).is(':checked') && $(this).attr('disabled') != 'disabled') {
            $(this).after('Checked and not disabled');
        }
    });
});

<input type="checkbox" class="check" checked disabled/><br/>
<input type="checkbox" class="check" /><br/>
<input type="checkbox" class="check" checked disabled/><br/>
<input type="checkbox" class="check" checked /><br/>
<input type="checkbox" class="check" /><br/>
<input type="checkbox" class="check" disabled /><br/>
<input type="checkbox" class="check" /><br/>
$(文档).ready(函数(){
$('.check')。每个(函数(){
console.log($(this.attr('disabled'));
if($(this).is(':checked')&&&$(this.attr('disabled')!='disabled')){
$(this).after('Checked and not disabled');
}
});
});







希望这能对你有所帮助

上面的代码行是表示是否选中此复选框且未禁用此复选框的逻辑

$(document).ready(function() {
    $('.check').each(function() {
        console.log($(this).attr('disabled'));
        if($(this).is(':checked') && $(this).attr('disabled') != 'disabled') {
            $(this).after('Checked and not disabled');
        }
    });
});

<input type="checkbox" class="check" checked disabled/><br/>
<input type="checkbox" class="check" /><br/>
<input type="checkbox" class="check" checked disabled/><br/>
<input type="checkbox" class="check" checked /><br/>
<input type="checkbox" class="check" /><br/>
<input type="checkbox" class="check" disabled /><br/>
<input type="checkbox" class="check" /><br/>
$(文档).ready(函数(){
$('.check')。每个(函数(){
console.log($(this.attr('disabled'));
if($(this).is(':checked')&&&$(this.attr('disabled')!='disabled')){
$(this).after('Checked and not disabled');
}
});
});







希望这能对你有所帮助

上面的代码行是表示是否选中此复选框且未禁用此复选框的逻辑

$(document).ready(function() {
    $('.check').each(function() {
        console.log($(this).attr('disabled'));
        if($(this).is(':checked') && $(this).attr('disabled') != 'disabled') {
            $(this).after('Checked and not disabled');
        }
    });
});

<input type="checkbox" class="check" checked disabled/><br/>
<input type="checkbox" class="check" /><br/>
<input type="checkbox" class="check" checked disabled/><br/>
<input type="checkbox" class="check" checked /><br/>
<input type="checkbox" class="check" /><br/>
<input type="checkbox" class="check" disabled /><br/>
<input type="checkbox" class="check" /><br/>
$(文档).ready(函数(){
$('.check')。每个(函数(){
console.log($(this.attr('disabled'));
if($(this).is(':checked')&&&$(this.attr('disabled')!='disabled')){
$(this).after('Checked and not disabled');
}
});
});







希望这能对你有所帮助

上面的代码行是表示是否选中此复选框且未禁用此复选框的逻辑

$(document).ready(function() {
    $('.check').each(function() {
        console.log($(this).attr('disabled'));
        if($(this).is(':checked') && $(this).attr('disabled') != 'disabled') {
            $(this).after('Checked and not disabled');
        }
    });
});

<input type="checkbox" class="check" checked disabled/><br/>
<input type="checkbox" class="check" /><br/>
<input type="checkbox" class="check" checked disabled/><br/>
<input type="checkbox" class="check" checked /><br/>
<input type="checkbox" class="check" /><br/>
<input type="checkbox" class="check" disabled /><br/>
<input type="checkbox" class="check" /><br/>
$(文档).ready(函数(){
$('.check')。每个(函数(){
console.log($(this.attr('disabled'));
if($(this).is(':checked')&&&$(this.attr('disabled')!='disabled')){
$(this).after('Checked and not disabled');
}
});
});








希望这有助于发布完整的代码示例。缺少什么部分?我将在检查元素时验证某些复选框是否已禁用。
取决于您的期望值。我怀疑您对
is()
的期望值不正确
。is(':checked')
将返回true,即使匹配集中只有一个复选框为checked@KickingLettuce您仍然没有提供预期的结果。错误的代码不能代替解释它应该发布一个完整的代码示例。缺少什么部分?我将在检查元素时验证某些复选框是否已禁用。
取决于您的期望值。我怀疑您对
is()
的期望值不正确
。is(':checked')
将返回true,即使匹配集中只有一个复选框为checked@KickingLettuce您仍然没有提供预期的结果。错误的代码不能代替解释它应该发布一个完整的代码示例。缺少什么部分?我将在检查元素时验证某些复选框是否已禁用。
取决于您的期望值。我怀疑您对
is()
的期望是不正确的
。is(':checked')