熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

多個datatable共存造成多個表格的checkbox都被選中

2013-11-15 12:02:30  來源: JSP教程 
所以當有多個datatable 引用到一個頁面中的時候全選事件會匹配全部的datatable所以造成全部多個表格的checkbox被都被選中  

  【問題原因】
這個應該是 jquerydatatable 控件本身的一個缺陷
該控件中的checkbox小插件的id是寫死的所以當有多個datatable引用到一個頁面中的時候全選事件會匹配全部的datatable所以造成全部多個表格的checkbox被都被選中

【解決方法】
所 以最好是修改jquerydatatable控件給生成的每個datatable下的checkbox賦 予不同的id因為datatable的id是不一樣的所以可以把 datatable的id作為 checkbox的前綴組成一個唯一的id 具體這個checkbox的調用事件也需要同步 替換成這個新id進行事件的調用
[修改文件]
jqureydatatableextjs (v)

init方法修改

復制代碼 代碼如下:
$("#"+optionsselect_table)find(thead tr th:firstchild)
prepend(<input type="checkbox" value="CHK_ALL" id=“chk_all" />);
==>
$("#"+optionsselect_table)find(thead tr th:firstchild)
prepend(<input type="checkbox" value="CHK_ALL" id="+optionsselect_table+_chk_all" />);

  
subscribeAllChk方法修改

復制代碼 代碼如下:
$("#chk_all")click(function(){
==>
$("#"+$fndatatable_extdefaultsselect_table+"_chk_all")click(function(){

  
subscribeChk方法修改

復制代碼 代碼如下:

  
if(checked_chk_num == curr_page_chk_num){
$("#chk_all")attr(checked checked);
}else{
$("#chk_all")removeAttr(checked);
}
==>
if(checked_chk_num == curr_page_chk_num){
$("#"+$fndatatable_extdefaultsselect_table+"_chk_all")attr(checked checked);
}else{
$("#"+$fndatatable_extdefaultsselect_table+"_chk_all")removeAttr(checked);
}


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20141.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.