0

我正在使用 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/

4

3 回答 3

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');
    } 
});
于 2013-09-20T02:36:29.503 回答
2

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

if (checkboxes.filter(":checked").length >= limit) { 
    checkboxes.not(":checked").iCheck('disable'); 
} else {
    checkboxes.not(":checked").iCheck('enable'); 
}
于 2013-09-20T01:33:39.587 回答
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');
        }
    });
    });
于 2018-03-07T11:36:26.643 回答