2013-09-19 3 views
0

Я использую флажки iCheck для создания стиля, и у меня возникли проблемы с использованием этой проверки. В принципе, мне нужно одновременно проверять 3 флажка и предотвращать проверку дополнительных полей.Ограничить количество отмеченных флажков с помощью iCheck

Я попытался с помощью этого:

$("#modal1").on("change", function() 
{ 
    var limit = 3, 
     checkboxes = $(this).find("input:checkbox"), 
     valid = checkboxes.filter(":checked").length >= limit; 

    checkboxes.not(":checked").attr("disabled", valid); 
    $('input').iCheck('update'); 
}); 

Он работает без iCheck, как показано ниже, но я не могу получить iCheck обновить.

http://jsfiddle.net/hUdrF/4/

ответ

2

Похоже, метод обновления iCheck не видит изменения атрибута инвалидов. Вы можете попробовать нативный метод iCheck для отключения флажка:

if (checkboxes.filter(":checked").length >= limit) { 
    checkboxes.not(":checked").iCheck('disable'); 
} else { 
    checkboxes.not(":checked").iCheck('enable'); 
} 
+0

Хм, это выглядит не так ли? '$ ("# modal1") на ("изменение", функция() { \t \t предел вар = 3 \t флажков = $ (это) .find (. "Вход: флажок") \t, если (. checkboxes.filter (": проверено") длина> = предел) { \t \t \t checkboxes.not (": проверено") iCheck ('выключить'); \t \t.} еще { \t \t \t checkboxes.not («: проверено»). iCheck ('enable'); \t \t} }); ' – user1272433

+0

Выглядит правильно, хотя я поставил точки с запятой, чтобы показать конец команды. '$ (" # modal1 "). on (" change ", function() { var limit = 3; checkboxes = $ (this) .find (" input: checkbox "); if (checkboxes.filter (" : проверено "). length> = limit) { checkboxes.not (": checked "). iCheck ('disable'); } else { checkboxes.not (": checked "). iCheck ('enable') } }); ' – SpaceDog

+0

Спасибо! Это поставило меня на правильный путь! – user1272433

4

Я до добавления .on("ifToggled" плюс код Spacedog, которая решается проблема.

$("#modal1").on("ifToggled", function() { 
    checkboxes = $(this).find("input:checkbox"); 
    if (checkboxes.filter(":checked").length >= 3) { 
     checkboxes.not(":checked").iCheck('disable'); 
    } else { 
     checkboxes.not(":checked").iCheck('enable'); 
    } 
}); 
0

внести некоторые изменения в коде

$("#modal1").on("change", function() 
    { 
    var limit = 2; 
    $('.check').on('ifChanged', function(event) { 
     checkboxes = $('.icheck-list').find("input:checkbox"); 
     if (checkboxes.filter(":checked").length >= limit) { 
      checkboxes.not(":checked").iCheck('disable'); 
     } else { 
      checkboxes.not(":checked").iCheck('enable'); 
     } 
    }); 
    }); 
Смежные вопросы