zoukankan      html  css  js  c++  java
  • 表格中的checkbox复选框 全选非全选 公共方法 及提交选中结果

      1 <!DOCTYPE html>
      2 <html>
      3 
      4     <head>
      5         <meta charset="utf-8" />
      6         <title></title>
      7     </head>
      8     <script type="text/javascript" src="js/jquery-1.8.0.js"></script>
      9 
     10     <body>
     11     
     12         <div>
     13             <input type="button" value="加载表格体"  onclick="showTbody()"/>
     14         </div>
     15         <hr />
     16         <!--///----------------------只要符合下面这个结构就可以用公共方法------------------------>
     17         <table>
     18             <thead>
     19                 <tr>
     20                     <td><input type="checkbox" class="allCheck"</td>
     21                     <td>全选</td>
     22                 </tr>
     23             </thead>
     24             <hr />
     25             
     26             <tbody id="tbody1">
     27                 <!--<tr>
     28                     <td><input type="checkbox" /></td>
     29                     <td>子复选框1</td>
     30                 </tr>-->
     31             </tbody>
     32             
     33         </table>
     34         <!--///---------------------------------------------------------------------------------->
     35         <hr />
     36         
     37         <div >
     38             <input type="button" value="提交" onclick="mySubmit()"/>
     39         </div>
     40         
     41     </body>
     42     <script>
     43         $(function(){
     44             $(".allCheck").live("click",checkAll); //给全选按钮绑定全选事件 
     45 //            $(".allCheck").bind("click",checkAll); 
     46             /*
     47              1.这里因为thead标签是写好的,所以也可以用bind,如果thead标签中的全选按钮也是动态加载的话
     48                  就必须用live方法,或者像生成td那样在生成的同时就马上bind绑定,否则会无效。
     49              
     50              2.如果是通用的给类选择器加的方法,还是尽量用live好。
     51                  比如  : 这个可以是所有全选复选框的公共方法,只要给每个全选复选框 加上 class="allCheck"即可
     52                  这样就不用给每个全选框都绑定一遍这个方法
     53              
     54              3.当然也可以给每一个子复选框都加个 class="childCheckBox",然后写个公共的:
     55                  $(".childCheckBox").live("click",cancelCheckAll);
     56                  即打开代码中的  带有 “///子复选框方案2************* ” 的行
     57              */
     58             
     59 //            $(".childCheckBox").live("click",cancelCheckAll);   ///子复选框方案2*************
     60             
     61         });
     62         
     63         ///加载表格体方法
     64         function showTbody(){
     65             var obj = $("#tbody1");
     66             var list = [{id:1,name:"1号子复选框"},{id:2,name:"2号子复选框"}];
     67             
     68             
     69             //开始拼接tbody
     70             $.each(list, function(i,v) {
     71                 var tr = $("<tr>").appendTo(obj);
     72                 //子复选框
     73                 $("<td>").append($("<input>",{type:'checkbox',value:v.id}).bind("click",cancelCheckAll)).appendTo(tr);  ///子复选框方案1
     74 //                $("<td>").append($("<input>",{type:'checkbox',value:v.id,class:'childCheckBox'})).appendTo(tr); ///子复选框方案2*************
     75                 //显示名称
     76                 $("<td>",{
     77                     text:v.name
     78                 }).appendTo(tr);
     79                 
     80             });
     81             
     82         }
     83         
     84         ///-------------------------公共的全选和非全选方法-----------------------------
     85         
     86         function checkAll(){ ///实现全选和全不选功能
     87             var allchecked  = this.checked;
     88             var checks = $(this).closest("table").children("tbody").find(":checkbox");
     89             $.each(checks,function(index,item){
     90                 item.checked = allchecked;
     91             })
     92         }
     93         
     94         function cancelCheckAll(){ ///实现取消任意一个子选项选中时,自动去掉全选的选中状态
     95             
     96             var allCheck = $(this).closest("table").children("thead").find(":checkbox").eq(0);
     97             if(!this.checked){
     98                 allCheck[0].checked=false;
     99             }
    100         }
    101         /*
    102         这两个方法可以是多处   有全选功能的复选框   的公共方法,只要目标表格的结构符合 table > thead > tbody  结构,就可以调用上面的两个方法
    103         */
    104         ///------------------------------------------------------
    105         
    106         ///提交方法
    107         function mySubmit(){
    108             //获取所有选中的复选框对象
    109             var checkeds = $("#tbody1 :checkbox:checked");  ///tbody下的复选框中选中的
    110             if(checkeds.length==0){
    111                 alert("请选择复选框!");
    112                 return;
    113             }
    114             var checkedId = "";
    115             for(var i=0;i<checkeds.length;i++){
    116                 var id = checkeds[i].value;
    117                 checkedId+=id+",";
    118             }
    119             checkedId = checkedId.substring(0,checkedId.length-1);//去掉最后的逗号,
    120             var  data = "";
    121             data += "&checkedIds="+checkedId;
    122             alert("data: "+data);
    123             /*  下面可以写 ajax 方法请求后台
    124              $.ajax({
    125                 url:"",
    126                 data:data,
    127                 async:true
    128                 success:function(response){
    129                     
    130                 }
    131             });*/
    132         }
    133         
    134         
    135     </script>
    136 
    137 </html>

  • 相关阅读:
    [书目20160620]自媒体时代,我们该如何做营销
    [转]Oracle Form 触发器执行顺序
    [转]在ASP.NET开发中容易忽略的2个小问题 Cookie乱码存取异常 和 iframe弹框的login跳转
    [转]菜鸟程序员之Asp.net MVC Session过期异常的处理
    [转]Asp.net MVC使用Filter解除Session, Cookie等依赖
    [转]异步、多线程、任务、并行编程之一:选择合适的多线程模型
    [转]Membership 到 .NET4.5 之 ASP.NET Identity
    [转]前后端分离开发模式下后端质量的保证 —— 单元测试
    [转]Asp.net MVC 利用PartialView 构造自定义菜单
    [转]Membership三步曲之入门篇
  • 原文地址:https://www.cnblogs.com/libin6505/p/6872555.html
Copyright © 2011-2022 走看看