天天看點

checkbox資料回顯問題

一、問題

  在用複選框的時候,最常用的無非就是全選,全不選,資料回顯等問題!要做的比較靈活!最近做項目的時候,就遇到這些問題,下面從js和JQueyr兩方面解決一下全選,全不選,資料回顯的問題。

二、HTML頁面

1     <input type="checkbox" id="checkAll"/>全選<br>
2     <input type="checkbox" name="media" value="100"  />新聞
3     <input type="checkbox" name="media" value="1001"  />微信 
4     <input type="checkbox" name="media" value="200"  />論壇
5     <input type="checkbox" name="media" value="300"  />問答
6     <input type="checkbox" name="media" value="1400"  />部落格
7     <input type="checkbox" name="media" value="400"  />平媒
8     <br>
9     <input type="submit" value="添加">      

三、JQueyr實作全選,全不選,資料回顯

1     <script type="text/javascript" src="js/jquery.min.js"></script>
 2     <script type="text/javascript">
 3         $(function(){
 4             //點選全選的判斷
 5             $("#checkAll").click(function(){
 6                 //看全選 是否被選中
 7                 var ischeckAll =$(this).attr("checked");
 8                 var checkBoxAll = $("input[name='media']");
 9                 if(ischeckAll=="checked"){
10                     //全部選中
11                     $.each(checkBoxAll,function(i,checkbox){
12                         $(checkbox).attr("checked",true);
13                     });    
14                 }else{
15                     //全不選
16                     $.each(checkBoxAll,function(i,checkbox){
17                         $(checkbox).attr("checked",false);
18                     });    
19                 }
20                 
21             });
22             
23             //點選新聞,微信,論壇,問答,部落格,平媒,等的判斷
24             $("input[name='media']").click(function(){
25                 //得到選中的長度
26                 var array=$("input[name='media']:checked").length;
27                 //如果等于6,說明全部被選中,那麼全選多選框也要被選中
28                 //如果不等于6,說明全部都沒選,那麼全選的多選框也要被取消
29                 if(array==6){
30                     $("#checkAll").attr("checked",true);
31                 }else{
32                     $("#checkAll").attr("checked",false);
33                 }
34             });
35         });
36     </script>      

注意:引入jquery的js

資料的回顯說明一下,資料的回顯,最長用到的地方是更新,當你更新的時候,你得把更新前的資料顯示到頁面中,是以,最好是在頁面加載完成的時候,然後,調用window.onload方法,使資料回顯到頁面!一般我們存儲多選框的值的時候,是以逗号隔開的字元串進行存儲的,例如:100,1001,1002,1004等,然後,我們可能會把值放到一個隐藏域中,以供在js中調用!本例,我們把值放到一個隐藏域中,然後,在js中調用

1         <input type="checkbox" id="checkAll"/>全選<br>
 2         <input type="checkbox" name="media" value="100"  />新聞
 3         <input type="checkbox" name="media" value="1001"  />微信 
 4         <input type="checkbox" name="media" value="200"  />論壇
 5         <input type="checkbox" name="media" value="300"  />問答
 6         <input type="checkbox" name="media" value="1400"  />部落格
 7         <input type="checkbox" name="media" value="400"  />平媒
 8         <br>
 9         <input type="hidden" value="100,1001,200,1400" id="meidaHidden">
10         <input type="submit" value="添加">      
1 $(function(){
 2         
 3             //當頁面加載完成的時候,自動調用該方法
 4             window.οnlοad=function(){
 5                 //獲得所要回顯的值,此處為:100,1001,200,1400
 6                 var checkeds = $("#meidaHidden").val();
 7                 //拆分為字元串數組
 8                 var checkArray =checkeds.split(",");
 9                 //獲得所有的複選框對象
10                 var checkBoxAll = $("input[name='media']");
11                 //獲得所有複選框(新聞,微信,論壇,問答,部落格,平媒)的value值,然後,用checkArray中的值和他們比較,如果有,則說明該複選框被選中
12                 for(var i=0;i<checkArray.length;i++){
13                     //擷取所有複選框對象的value屬性,然後,用checkArray[i]和他們比對,如果有,則說明他應被選中
14                     $.each(checkBoxAll,function(j,checkbox){
15                         //擷取複選框的value屬性
16                         var checkValue=$(checkbox).val();
17                         if(checkArray[i]==checkValue){
18                             $(checkbox).attr("checked",true);
19                         }
20                     })
21                 }
22                 
23                 //全選多選框的回顯
24                 var array=$("input[name='media']:checked").length;
25                 //如果等于6,說明全部被選中,那麼全選多選框也要被選中
26                 //如果不等于6,說明全部都沒選,那麼全選的多選框也要被取消
27                 if(array==6){
28                     $("#checkAll").attr("checked",true);
29                 }else{
30                     $("#checkAll").attr("checked",false);
31                 }
32                 
33             };
34 });      

四、JavaScript實作全選,全不選,資料回顯

  html頁面的設計:

1 <input type="checkbox" id="all" onclick="checkAll(this)"/>全選<br>
 2 <input type="checkbox" id="check01" name="media" value="100"  onclick="check(this)" />新聞
 3 <input type="checkbox" id="check01" name="media" value="1001" onclick="check(this)" />微信 
 4 <input type="checkbox" id="check03" name="media" value="200"  onclick="check(this)"/>論壇
 5 <input type="checkbox" id="check04" name="media" value="300"  onclick="check(this)"/>問答
 6 <input type="checkbox" id="check05" name="media" value="1400" onclick="check(this)" />部落格
 7 <input type="checkbox" id="check06" name="media" value="400"  onclick="check(this)"/>平媒
 8 <br>
 9 <input type="hidden" value="100,1001,200,300,1400,400" id="meidaHidden">
10 <input type="submit" value="添加">      

  js中的設計:

1 <script type="text/javascript">
 2         var number=0;
 3         //單擊全選
 4         function checkAll(checkBoxAll){
 5             var elements = document.getElementsByName("media");
 6             if(checkBoxAll.checked){
 7                 //全選
 8                 for(var i=0;i<elements.length;i++){
 9                     var ele = elements[i];
10                     ele.checked=true;
11                 }
12                 number=6;
13             }else{
14                 //全不選
15                 for(var i=0;i<elements.length;i++){
16                     var ele = elements[i];
17                     ele.checked=false;
18                 }
19                 number=0;
20             }
21         };
22         
23         //點選新聞,微信,論壇,問答,部落格,平媒,等的判斷
24         function check(checkbox){
25             if(checkbox.checked){
26                 number++;
27             }else{
28                 number--;
29             }
30             
31             //如果長度為6,那麼全選複選框選中,否則不選
32             var cBoxAll = document.getElementById("all");
33             if(number==6){
34                 cBoxAll.checked=true;
35             }else{
36                 cBoxAll.checked=false;
37             }
38         };
39 </script>      

  js中資料的回顯,通JQuery一樣,在window.onload中添加

   

轉載于:https://www.cnblogs.com/robert-blue/p/4285761.html