使用iCheck限制已选中复选框的数量

我正在使用iCheck来设置复选框样式,而我在使用此方法时遇到问题。 基本上我需要允许一次检查3个复选框,并防止进一步检查框。

我试过用这个:

$("#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/

我添加了.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'); } }); 

看起来iCheck更新方法没有看到对disabled属性的更改。 您可以尝试使用本机iCheck方法来禁用复选框:

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

在代码中进行一些更改

  $("#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'); } }); });