我创建了一个复选框的jQuery对象,并将其存储在变量中:
$group1 = $('#checkbox1,#checkbox2,#checkbox3,#checkbox4');
除非检查该组中的所有复选框,否则用户无法继续。
我一直在使用if语句与.is(':checked')
结合来查找布尔值:
if( $group1.is(':checked') ){
//continue is OK
}
...但如果在组内选中任何复选框,则.is(':checked')
将返回TRUE
。实质上,.is(':checked')
对$ group1中的选定元素执行OR运算。我正在寻找AND操作,因此必须检查所有选定的元素以返回TRUE
。是否有jQuery函数可以执行此操作或其他解决方法?
答案 0 :(得分:21)
@Adam关闭了一点
if( $group1.filter(':not(:checked)').length === 0){
//continue is OK
}
答案 1 :(得分:2)
修正:
您可以filter仅获取 not checked 元素,然后检查是否有任何元素仍在集合中,如果没有检查组中的所有元素:
if( $group1.filter(':not(:checked)').length === 0){
//continue is OK
}
答案 2 :(得分:1)
我建议你给你的复选框一个班级
var len = $('.check_needed').length;
var chk = $('.check_needed:checked').length;
if (len == check){
//carry on
}else{
// go home
}
答案 3 :(得分:1)
我认为你需要这样的东西:
$(document).ready(function(){
var checked = true;
$('input:checkbox').each(function(){
if(checked){
checked = $(this).is(':checked');
}
});
});
如果未选中任何一个,则应设置checked = false。
答案 4 :(得分:0)
您也可以使用
$(函数(){
// add multiple select / deselect functionality
$("#selec_all_chk").click(function () {
$('.chk_class').attr('checked', this.checked);
});
// if all checkbox are selected, check the selectall checkbox
// else uncheck
$(".chk_class").click(function(){
if($(".chk_class").length == $(".chk_class:checked").length) {
$("#selec_all_chk").attr("checked", "checked");
} else {
$("#selec_all_chk").removeAttr("checked");
}
});
});