复选框使用总结

对复选框最基本的应用, 就是对复选框进行全选,反选和全不选等操作.复杂的操作需要与选项挂钩,来达到各种级联效果.
首先在空白网页中创建一个表单, 其中放入一组复选框:
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8 <form action="">
 9     你爱好的运动是?<br/>
10     <input type="checkbox" name="items" value="足球"/>足球
11     <input type="checkbox" name="items" value="篮球"/>篮球
12     <input type="checkbox" name="items" value="羽毛球"/>羽毛球
13     <input type="checkbox" name="items" value="兵乓球"/>兵乓球
14     <input type="checkbox" name="items" value="排球"/>排球<br/>
15     <input type="button" id="CheckedAll" value="全选"/>
16     <input type="button" id="CheckedNo" value="全不选"/>
17     <input type="button" id="CheckedRev" value="反选"/>
18     <input type="button" id="send" value="提交">
19 </form>
20 <script type="text/javascript" src="js/jquery-1-8-3.js"></script>
21 <script type="text/javascript">
22     $(function () {
23         //全选
24         $("#CheckedAll").click(function () {
25             $("[name = items]:checkbox").attr("checked",true);
26         });
27         //全不选
28         $("#CheckedNo").click(function () {
29             $("[name = items]:checkbox").attr("checked",false);
30         });
31         //反选
32         /***
33          * 反选需要循环每一个复选框进行设置,取他们值得反值.
34          */
35         $("#CheckedRev").click(function () {
36             $("[name = items]:checkbox").each(function(){
37                 $(this).attr("checked",!$(this).attr("checked"));
38             });
39         });
40         /***
41          * 此处用jQuery的attr()方法来设置属性checked的有些复杂,如果改用javascript原生的DOM方法,将比jQuery对象更有效和简洁.
42          */
43         $("#CheckedRev").click(function () {
44             $("[name = items]:checkbox").each(function(){
45                this.checked = !this.checked;
46             });
47         });
48         /***
49          * 复选框选中后,用户单机提交按钮, 需要将选中的项的值输出.可以通过val()方法获取选中的值.
50          */
51         $("#send").click(function () {
52             var str = "你选中的是:\r\n";
53             $("[name = items]:checkbox:checked").each(function(){
54                 str += $(this).val() + "\r\n";
55             });
56             console.log(str);
57         });
58     });
59 </script>
60 </body>
61 </html>

效果截图:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8 <form action="">
 9     你爱好的运动是?<br/>
10     <input type="checkbox" id="CheckedAll"/>全选/全不选<br/>
11     <input type="checkbox" name="items" value="足球"/>足球
12     <input type="checkbox" name="items" value="篮球"/>篮球
13     <input type="checkbox" name="items" value="羽毛球"/>羽毛球
14     <input type="checkbox" name="items" value="兵乓球"/>兵乓球
15     <input type="checkbox" name="items" value="排球"/>排球<br/>
16     <input type="button" id="send" value="提交">
17 </form>
18 <script type="text/javascript" src="js/jquery-1-8-3.js"></script>
19 <script type="text/javascript">
20     $(function () {
21         //全选
22 //        $("#CheckedAll").click(function () {//如果当前单机的复选框被选中
23 //            if(this.checked){
24 //                $("[name = items]:checkbox").attr("checked",true);
25 //            }else{
26 //                $("[name = items]:checkbox").attr("checked",false);
27 //            }
28 //        });
29 
30         /***
31          * 所有复选框的checked属性的值和控制全选的复选框的checked属性的值是相同的, 因此可以省略if判断,直接赋值
32          */
33 
34 //        $("#CheckedAll").click(function () {//如果当前单机的复选框被选中
35 //            $("[name = items]:checkbox").attr("checked",this.checked);
36 //        });
37 
38         /***
39          * 当单机id为CheckedAll的复选框后, 复选框组被选中.
40          * 当复选框组里取消某一个选项的选中状态, id为CheckedAll的复选框并没有被取消选中状态.
41          * 而此时需要它和复选框能够联系起来,即复选框组里如果有一个或者更多没选中时,则取消d为CheckedAll的复选框的选中状态.
42          * 如果复选框组被选中时,则d为CheckedAll的复选框也自动被选中.
43          * 因此需要对复选框组进行操作, 以通过他们来控制d为CheckedAll的复选框.
44          * (1)对复选框组绑定单击事件.
45          * (2)定义一个flag变量, 默认为true
46          * (3)循环复选框组, 当有没被选中的项时,则把变量flag的值设置为false.
47          * (4)根军变量flag的值来设置id为CheckedAll的复选框是否选中.
48          */
49 
50         $("#CheckedAll").click(function () {//如果当前单机的复选框被选中
51             $("[name = items]:checkbox").attr("checked",this.checked);
52         });
53 //        $("[name = items]:checkbox").click(function () {
54 //            var flag = true;
55 //            $("[name = items]:checkbox").each(function () {
56 //                if(!this.checked){
57 //                    flag = false;
58 //                }
59 //            });
60 //            $("#CheckedAll").attr("checked", flag);
61 //        });
62         /***
63          * 另一种办法
64          * (1)对复选框绑定单击事件
65          * (2)判断复选框的总数是否与选中复选框数量相等.
66          * (3)如果相等,则说明全部选中,否则不选中.
67          */
68         $("[name = items]:checkbox").click(function () {
69             //定义一个临时变量, 避免重复使用同一个选择器选择页面中的元素, 提高程序效率
70             var $tmp = $("[name = items]:checkbox");
71             //用filter()方法筛选出选中的复选框,并直接给CheckedAll赋值
72             $("#CheckedAll").attr("checked", $tmp.length == $tmp.filter(":checked").length);
73         });
74 
75         $("#send").click(function () {
76             var str = "你选中的是:\r\n";
77             $("[name = items]:checkbox:checked").each(function(){
78                 str += $(this).val() + "\r\n";
79             });
80             console.log(str);
81         });
82     });
83 </script>
84 </body>
85 </html>

下过截图:

posted @ 2016-09-22 13:55  SkyTeam_LBM  阅读(390)  评论(0编辑  收藏  举报