限制复选框金额

str*_*ade 21 checkbox jquery

我有20个复选框.如果选中4个复选框,我需要禁用16个复选框.

我试着用这个jquery代码开始

    $("input[type=checkbox][name=cate]:checked").each(

    function()
    {
    }

);
Run Code Online (Sandbox Code Playgroud)

我需要的是,如果用户选择4个复选框,则应禁用所有其他复选框.

Rei*_*gel 60

$("input[type=checkbox][name=cate]").click(function() {

    var bol = $("input[type=checkbox][name=cate]:checked").length >= 4;     
    $("input[type=checkbox][name=cate]").not(":checked").attr("disabled",bol);

});
Run Code Online (Sandbox Code Playgroud)

演示


Woo*_*ody 7

提供id为limit_checkbox的父元素将有助于加速选择,缓存查询可减少缓慢的DOM交互量.

使用"更改"而不是单击否则代码可以通过使用键盘来规避,也可以使用live而不是bind更快.

// Cache jQuery selection
var $checkboxes_to_limit = $("#limit_checkbox").find("input:checkbox[name=cate]");
$checkboxes_to_limit.live("change", function() {
    if($checkboxes_to_limit.filter(":checked").length >= 4) {
        $checkboxes_to_limit.not(":checked").attr("disabled","disabled");
    }
    else {
        $checkboxes_to_limit.removeAttr("disabled");
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 由于Woody提到的原因,这是一个比被接受的答案要好得多的答案.如果使用> = jQuery 1.7,则应将.live()替换为.on()[根据文档](http://api.jquery.com/live/). (2认同)