1. 程式人生 > >單選,全選操作js相關技術

單選,全選操作js相關技術

刷新 checkbox dal 重新 所有 split ise pan ppc

jsp上編寫全選框,單選框

全選框

1 <td class="TableHeaderCell" style="width: 30px;">
2     <input id="checkedAll"  type="checkbox">
3 </td>

單選框

<input id="fappChecked" 
    name="checkedFapp" type="checkbox"
    onclick="javascript:cliAppro.checkedOne(this);"
    forgid="<c:out value=‘${row.FORGID}‘/>"
forgname="<c:out value=‘${row.FORGNAME}‘/>" cfrcode="<c:out value=‘${row.FRCODE}‘/>" value = "<c:out value=‘${row.FAPPALLID}‘/>"/>

jsp上還要表寫幾個隱藏的input框,用於存放選中的數據

1 <input id="FAPPALLIDS" type="hidden" value="" />
2 <input id="UNITS" type="hidden" value=""/>
3 <input id="FORGIDS" type="hidden" value=""/> 4 <input id="CFRCODES" type="hidden" value=""/>

js上首先在加載頁面時給這幾個隱藏框賦值

 1         /**
 2          * 初始化頁面數據(0,打開頁面初始化,1,查詢、分頁數據初始化);
 3          * 為多選框存放數值
 4          * @param {Object} ctype
 5          */
 6         this.iniData = function(ctype){
7 fappallids = $get(‘FAPPALLIDS‘); 8 forgids = $get(‘FORGIDS‘); 9 units = $get(‘UNITS‘); 10 cfrcodes = $get(‘CFRCODES‘); 11 checkedNumber = $get(‘checkedNumber‘); 12 checkedFapp = document.getElementsByName("checkedFapp"); 13 14 if(ctype =="0"){ 15 fappallids.value = ""; 16 forgids.value = ""; 17 units.value = ""; 18 cfrcodes.value = ""; 19 checkedNumber.innerHTML = 0; 20 } 21 }

js上一個公用的添加、刪除選中數據的方法

 1         /**
 2          * 操作撥付數組;添加、刪除撥付號
 3          * @param {Object} box_obj
 4          */
 5         this.add_del_Fund = function(box_obj){
 6             //獲取id=FAPPALLIDS 的隱藏框的值
 7             var fund = fappallids;
 8             
 9             if(box_obj.checked){//選中 向隱藏值中添加
10                 if(fund.value == ‘‘){//判斷id=FAPPALLIDS 的隱藏框的值是否為空,為空就直接賦值,不為空就 +=‘,‘ 加逗號 追加值
11                     fund.value = box_obj.value;
12                     //註意不同的取值方法 .value和getAttribute("");
13                     units.value = box_obj.getAttribute(‘forgname‘);
14                     forgids.value = box_obj.getAttribute(‘forgid‘);
15                     cfrcodes.value = box_obj.getAttribute(‘cfrcode‘);
16                  }else{
17                     fund.value+= ‘,‘+box_obj.value;
18                     units.value +=‘,‘+box_obj.getAttribute(‘forgname‘);
19                     forgids.value +=‘,‘+box_obj.getAttribute(‘forgid‘);
20                     cfrcodes.value +=‘,‘+box_obj.getAttribute(‘cfrcode‘);
21                 }
22             }else{//取消選擇從隱藏值中刪除
23                 //將字符串按 ‘,‘分割為字符串數組
24                 var funds = (fund.value).split(‘,‘);
25                 var funits = (units.value).split(‘,‘);
26                 var fforgids =(forgids.value).split(‘,‘);
27                 var fcforgids =(cfrcodes.value).split(‘,‘);
28                 //聲明數組
29                 var newFunds = [];
30                 var newFunits = [];
31                 var newFforgids = [];
32                 var newFcforgids = [];
33                 for(var n=0,j = 0; j < funds.length; j++){
34                     //判斷funds[j]是否和你要取消選中的框裏的值相等,
35                     //如果不相等就將這個值賦值到新聲明的數組中
36                     //如果相等 就用continue關鍵字跳過下面賦值的代碼,這樣就相當於刪除了
37                     if(funds[j].indexOf(box_obj.value) == 0){
38                         continue;
39                     }
40                     newFunds[n] = funds[j];
41                     newFunits[n] = funits[j];
42                     newFforgids[n] = fforgids[j];
43                     newFcforgids[n] = fcforgids[j];
44                     //為下一次賦值做準備
45                     n++;
46                 }
47                 //用新聲明的數組賦值到fund中
48                 fund.value = newFunds.join(‘,‘);
49                 units.value = newFunits.join(‘,‘);
50                 forgids.value = newFforgids.join(‘,‘);
51                 cfrcodes.value = newFcforgids.join(‘,‘);
52             }
53         }

js上單選方法:

 1 /**
 2          * 單選操作
 3          * @param {Object} box_obj
 4          */
 5         this.checkedOne = function(box_obj){
 6             //聲明變量obj對應name="cliApplyBFWin"的對選框
 7             var obj = checkedFapp;
 8             var checkedNum = 0;
 9             //每次選中都要計算已選擇的框的個數
10             for ( var i = 0; i < obj.length; i++) {
11                 if (obj[i].checked){
12                     checkedNum +=1;
13                 }
14             }
15             //獲取id=‘checkedAll‘的全選框對象
16             var checkAll = $get(‘checkedAll‘);
17             //由checkedNum與obj.length相等判斷所有的多選框都已經被選中,
18             //這時改變全選框的狀態為已選
19             if(checkedNum == obj.length){
20                 checkAll.checked = true;
21             }
22             //由checkedNum小於obj.length判斷還有多選框的狀態為 未選中
23             //這時 全選框 的狀態為 未選中
24             if(checkedNum < obj.length){
25                 checkAll.checked = false;
26             }
27             //獲取和刪除選中獲得的值
28             object.add_del_Fund(box_obj);
29             if((fappallids.value).length < 1){
30                 checkedNumber.innerHTML = 0;
31             }else{
32                 checkedNumber.innerHTML = ((fappallids.value).split(‘,‘)).length;
33             }
34         }

js上全選方法:

 1 /**
 2          * 全選擇
 3          * 
 4          */
 5         this.checkedAll = function(checkObj){
 6             //獲取全選框的狀態
 7             var booleanAll = checkObj.checked;
 8             //獲取單選框組對象
 9             var obj = checkedFapp;
10             var i = 0;
11             for (; i < obj.length; i++) {
12                 //判斷單選框狀態是否和全選框相同,
13                 //相同就跳過繼續,不相同就改變單選框狀態
14                 if(obj[i].checked == booleanAll)
15                     continue;
16                 obj[i].checked = booleanAll;
17                 //從隱藏框裏添加或者取消單選框的值
18                 object.add_del_Fund(obj[i]);
19             }
20     
21             if((fappallids.value).length < 1){
22                 checkedNumber.innerHTML = 0;
23             }else{
24                 checkedNumber.innerHTML = ((fappallids.value).split(‘,‘)).length;
25             }
26         }

java代碼中對選中數據進行批量操作

 1 //先判斷是否存在
 2             if(ToolUtils.isEmpty(mapParam.get("FAPPALLIDS"))){
 3                 throw new ServiceLocatorException("請選擇要撤銷的申請單!");
 4             }
 5             //若存在就將值保存到新數值中
 6             String fappallids[] = String.valueOf(mapParam.get("FAPPALLIDS")).split(",");
 7             String forgids[] = String.valueOf(mapParam.get("FORGIDS")).split(",");
 8             String cfrcodes[] = String.valueOf(mapParam.get("CFRCODES")).split(",");
 9             if(fappallids.length != forgids.length){
10                 throw new SaveException("非法操作!請刷新頁面,重新操作!");
11             }
12             //從mapParam中刪除那些數值
13             mapParam.remove("FAPPALLIDS");
14             mapParam.remove("FORGIDS");
15             mapParam.remove("CFRCODES");
16             int delN = 0;
17             //再將值一個一個的存到map中,進行相關操作
18             for(int i=0; i<fappallids.length; i++){
19                 mapParam.put("FAPPALLID", fappallids[i]);
20                 mapParam.put("FORGID", forgids[i]);
21                 mapParam.put("FRCODE", cfrcodes[i]);
22                 delN += this.delRevocationForFapp(mapParam);
23             }
24             return delN;

單選,全選操作js相關技術