电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

多个datatable共存造成多个表格的checkbox都被选中


发布日期:2023/4/11
 
所以当有多个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);
}

上一篇:鼠标旋转特效

下一篇:常用正则表达式