如下圖,一個分頁列表,用戶可以隨意勾選一條或多條信息,然后進行某種操作,如“提交”。但是有個問題:如果勾選了一條信息之后,點【下一頁】,那么上一頁 勾選的條目被刷新掉了。
問題:如果用戶需要在第1頁,第二頁,第三頁各選幾條或多條 然后統一提交處理,該怎么辦?
如何在第二頁,知道第一頁所選的條目? 如何在返回第一頁的時候,把剛才勾選過的條目 標記為選中的狀態?
思路:--->在頁面放一個DIV
------> 為checkbox加一個事件,當該條記錄被選中時,獲取這條記錄,把它存到div中
--------->從第二頁返回第一頁時,從DIV中檢查,將DIV中的記錄與列表中的記錄匹配,如果列表中的某條信息在DIV中,則將列表中的該條checkbox設為checked=true。
第一步:將 勾選的條目放在 DIV中,效果如下圖
//記錄或者刪除勾選的資源。 //參數: check 為當前點擊的checkbox,tableId為保存勾選條目的表格id function toRecordCheck(check,tableId,recordDiv) { //用於記錄已經選擇的條目的 表格id. //var tableId="recordTable"; //當前選中的行 var tds = $(check.parentNode.parentNode);
//根據td來查找 ,當前行的數據 var contents = tds.find("td"); //獲得資源編號 需要根據資源編號所在的列來獲取值 var sourceNum=contents[1].innerHTML; //如果是【取消選中】 if(!check.checked){ //alert("刪除資源編號為:"+sourceNum+"的條目"); var r=$("#"+tableId+" td").each(function(){ if($(this).text()==sourceNum){ var vh=$(this).parent().remove(); } }); } else { //如果是【選中】,在記錄的table里邊動態追加一行 var contentText = "<tr id="+sourceNum+">"; for ( var i = 0, j = contents.size(); i < j; i++) { if (i != 0){ contentText += "<td>" + contents[i].innerHTML+"</td>"; } } contentText+="</tr>"; $("#"+tableId+"").append(contentText); } }
第二步:返回【上一頁】時,恢復 上一次已經 勾選過的內容
在這里,以【資源編號】為查找條件,先獲得DIV中所記錄的資源編號,然后根據編號在 當前頁面的 列表中匹配,匹配上的,就把該條記錄的checkbox設為checked=true;
代碼如下:
//恢復記錄,將之前勾選過的條目選中 //參數:recordTableId為保存勾選條目的表格Id,listTableId為列表table的id. function regain(recordTableId,listTableId){ $("#"+recordTableId+" tr").each(function(){ var ids=$(this).attr("id"); //獲得之前選中的資源編號 $("#"+listTableId+" td").each(function(){//遍歷列表所在的table, if($(this).text()==ids){//將其中的資源編號與取得的資源編號匹配 var vh=$(this).parent().find(":checkbox").attr("checked", true);//匹配成功 則選中當前行的 checkbox } }); }); }
效果如下: