пятница, 27 апреля 2012 г.

Зависимые checkbox в jQuery. Как выделить все чекбоксы и отменить выбор.

Постановка задачи:
   На форме имеются несколько чекбоксов, которые зависят от одного главного чекбокса. При щелчке на главном чекбоксе нужно выделить все подчиненные чекбоксы. Если все подчиненные чекбоксы выделены и снимается выделение с одного из них - с гланого так же нужно снять выделение.
В моем варианте это выглядит так (в верхней строке главный чекбокс):
 


Решение:




Главный checkbox:
<input type="checkbox" id="mainChecker" onclick="toggleChecked(this.checked)" />
Все подчиненные чекбоксы должны иметь класс checkbox:


<input type="checkbox" class="checkbox" onclick="toggleParentChecked(this.checked)" />

Скрипты, отмечающие чекбоксы:

//отмечаем все подчиненные чекбоксы, при щелчке на главном
function toggleChecked(status) {
     $(".checkbox").each(function() {
        $(this).attr("checked",status);
     })
}

//отмечаем родительтский checkbox если выбраны все дочерние, или снимаем с него выбор если хоть один из дочерних чекбоксов не отмечен 
function toggleParentChecked(status) {
     if(status==false)
     $("#mainChecker").attr("checked",status); 
     else
     {
        var isallchecked = true;
        $(".checkbox").each(function() {
        if(!$(this).attr("checked"))
           isallchecked = false;
     })
     if(isallchecked)
        $("#mainChecker").attr("checked", true); 
     }
}



Комментариев нет:

Отправить комментарий