JQuery的禁用时选择所有所有复选框被选中

厌倦

我要单击“全选”,它将禁用/淡出其余选项。但是,如果未选中“全选”,则执行代码说明的所有操作。

我究竟做错了什么?

$(function() {
    $("input[type=checkbox]").change(function() {
        var count_checkbox = $("input[type=checkbox]:checked").length;
        var disable_checkbox = $("input[type=checkbox]:checked").length >= 3;  

        if ($("input.category_all:checked").is(':checked')) {
           $("input[type=checkbox]").not(":checked").attr("disabled",disable_checkbox);
        }

        $("input[type=checkbox]").not(":checked").attr("disabled",disable_checkbox);

        if(count_checkbox > 0){
            $('#checkbox_counter').replaceWith('<div id="checkbox_counter">'+count_checkbox+' Selected</div>');
        }else{
            $('#checkbox_counter').replaceWith('<div id="checkbox_counter">Select...</div>');
        }
    });   
});

http://jsfiddle.net/k6R7g/2/

VLAZ

好的,disable_checkbox布尔值出了问题-仅当您检查了三个或更多项(尝试检查b,c和d会看到)时,它才是正确的,但此时“全选”实际上并没有全部选择。

这是基于您自己的更优雅的解决方案

$(function() {
    $("input[type=checkbox]").change(function() {
        var count_checkbox_all = $("input[type=checkbox]").not(".category_all").length;
        var count_checkbox_checked = $("input[type=checkbox]:checked").not(".category_all").length;

        if ($(this).hasClass("category_all")) { 
            //if we clicked on "Select All"
            var is_checked = $(".category_all").is(":checked");
            //check/uncheck everything and disable/enable the rest of the tickboxes based on the state of this one
            $(".categories_list").prop("checked", is_checked).attr("disabled",  is_checked);

            //also update the count of checked items
            count_checkbox_checked = $("input[type=checkbox]:checked").not(".category_all").length;
        }

        if (count_checkbox_checked == count_checkbox_all) { //if all have been checked
            //make sure they are disabled and that "Select All" is checked as well
            $(".categories_list").attr("disabled",  true);
            $(".category_all").prop("checked", true);
        }

        if(count_checkbox > 0){
            $('#checkbox_counter').replaceWith('<div id="checkbox_counter">'+count_checkbox+' Selected</div>');
        }else{
            $('#checkbox_counter').replaceWith('<div id="checkbox_counter">Select...</div>');
        }
    });   
});

您可以在此处查看其运行情况:JS Fiddle

如果单击“全选”,则它将选中所有复选框(因为之后将对选中的复选框进行计数),然后将其禁用。如果取消选中它,则它将清除复选框的复选框并启用它们。此后将执行计数,并且不包括“全选”复选框,因为从概念上讲,您只有4个选项-计算第5个选项没有多大意义

编辑根据@Tyblitz的评论,现在当您单独选择所有复选框时,将获得单击“全选”的效果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jQuery选择所有复选框,如果复选框已被选中,请不要.change()

来自分类Dev

选中任何复选框时,所有复选框都被选中吗?

来自分类Dev

选中/取消选中jQuery中的所有复选框

来自分类Dev

即使选中一个复选框,所有复选框也会被选中

来自分类Dev

jQuery / JavaScript:选中所有复选框并选中每个复选框以显示div

来自分类Dev

使用任何选中的复选框启用/禁用所有输入和复选框

来自分类Dev

检查是否所有复选框被选中。安卓

来自分类Dev

(Excel 用户表单) 检查用户表单中的所有复选框是否都被选中

来自分类Dev

所有复选框都在角度 6 中被选中

来自分类Dev

取消选中所有复选框,使用jQuery禁用一个

来自分类Dev

如何使用每个循环 jquery 禁用所有未选中的复选框

来自分类Dev

选中所有复选框

来自分类Dev

选中所有复选框

来自分类Dev

显示所有选中的复选框

来自分类Dev

选中所有复选框

来自分类Dev

选中所有复选框

来自分类Dev

jQuery代码(如果已选中复选框),请选择所有其他复选框-使用Laravel

来自分类Dev

jQuery设置所有复选框选中

来自分类Dev

jQuery选中所有复选框

来自分类Dev

获取所有选中的复选框 javascript 或 jquery

来自分类Dev

选中多个列表中的复选框时选择所有复选框

来自分类Dev

Jquery - 单击复选框时取消选中所有复选框

来自分类Dev

当我选中所有复选框时如何选择所有复选框

来自分类Dev

如何实现Jquery复选框选中全部/取消选中带有复选框的所有功能?

来自分类Dev

如何选择所有/取消选择所有未禁用的复选框?

来自分类Dev

jQuery选择表中的所有复选框

来自分类Dev

jQuery选择表行中的所有复选框

来自分类Dev

如何使用jQuery或JavaScript选择所有复选框?

来自分类Dev

jQuery复选框选择所有子级

Related 相关文章

  1. 1

    jQuery选择所有复选框,如果复选框已被选中,请不要.change()

  2. 2

    选中任何复选框时,所有复选框都被选中吗?

  3. 3

    选中/取消选中jQuery中的所有复选框

  4. 4

    即使选中一个复选框,所有复选框也会被选中

  5. 5

    jQuery / JavaScript:选中所有复选框并选中每个复选框以显示div

  6. 6

    使用任何选中的复选框启用/禁用所有输入和复选框

  7. 7

    检查是否所有复选框被选中。安卓

  8. 8

    (Excel 用户表单) 检查用户表单中的所有复选框是否都被选中

  9. 9

    所有复选框都在角度 6 中被选中

  10. 10

    取消选中所有复选框,使用jQuery禁用一个

  11. 11

    如何使用每个循环 jquery 禁用所有未选中的复选框

  12. 12

    选中所有复选框

  13. 13

    选中所有复选框

  14. 14

    显示所有选中的复选框

  15. 15

    选中所有复选框

  16. 16

    选中所有复选框

  17. 17

    jQuery代码(如果已选中复选框),请选择所有其他复选框-使用Laravel

  18. 18

    jQuery设置所有复选框选中

  19. 19

    jQuery选中所有复选框

  20. 20

    获取所有选中的复选框 javascript 或 jquery

  21. 21

    选中多个列表中的复选框时选择所有复选框

  22. 22

    Jquery - 单击复选框时取消选中所有复选框

  23. 23

    当我选中所有复选框时如何选择所有复选框

  24. 24

    如何实现Jquery复选框选中全部/取消选中带有复选框的所有功能?

  25. 25

    如何选择所有/取消选择所有未禁用的复选框?

  26. 26

    jQuery选择表中的所有复选框

  27. 27

    jQuery选择表行中的所有复选框

  28. 28

    如何使用jQuery或JavaScript选择所有复选框?

  29. 29

    jQuery复选框选择所有子级

热门标签

归档