Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使DataTables不筛选某些行_Javascript_Jquery_Datatables - Fatal编程技术网

Javascript 使DataTables不筛选某些行

Javascript 使DataTables不筛选某些行,javascript,jquery,datatables,Javascript,Jquery,Datatables,目前,我们的通用数据表集成允许我们筛选用户、项目等 对于我们的用户表,我们有一个带有复选框的列。单击此复选框时,用户应忽略任何表筛选 以下是我们的想法: 我们点击复选框,比如说,两个用户 我们开始筛选未选中的用户 两个选中的用户以及筛选出的用户将保留在表中 我编写了一个实现,如果该行被检查但不存在,它只会将该行追加回DOM中,但它相当粗糙。我更喜欢使用DataTables本身提供的工具的实现 有人知道怎么做吗?如果想法是在搜索时保留带有复选框的行,您可以使用自定义搜索栏来实现,该搜索栏将根据

目前,我们的通用数据表集成允许我们筛选用户、项目等

对于我们的用户表,我们有一个带有复选框的列。单击此复选框时,用户应忽略任何表筛选

以下是我们的想法:

  • 我们点击复选框,比如说,两个用户
  • 我们开始筛选未选中的用户
  • 两个选中的用户以及筛选出的用户将保留在表中
我编写了一个实现,如果该行被检查但不存在,它只会将该行追加回DOM中,但它相当粗糙。我更喜欢使用DataTables本身提供的工具的实现


有人知道怎么做吗?

如果想法是在搜索时保留带有复选框的行,您可以使用自定义搜索栏来实现,该搜索栏将根据行节点中是否包含搜索文本已选中复选框来过滤行:

$.fn.dataTable.ext.search.push((_,__,rowIdx,dataObj) => Object.values(dataObj).some(cellData => cellData.toLowerCase().includes($('#searchbar').val().toLowerCase())) || $(dataTable.row(rowIdx).node()).is(':has(:checked)'));

完成此概念的演示。

尝试解决问题。这是解决办法

$(文档).ready(函数(){
var dataTable=$('#示例').dataTable();
dataTable.on('search.dt',function(){
$('.dataTables_filter input').unbind().keyup(函数(e){
var值=$(this.val();
值='true |'+值
//console.log(值);
fnFilter(值,null,true,false,true,true);
})
});
$('table').find('tr').on('change',函数(事件){
//log($(this.index());
//console.log(event.target.checked);
if(event.target.checked){
$(event.target).attr('checked','checked');
$(event.target).parent().append('true');
}否则{
$(event.target).removeAttr('checked');
$(event.target).parent().find('div').remove(“#哈哈”);
}
//重新加载特定行
//dataTable.api().row($(this.index()).invalidate().draw();
//重新加载所有行
dataTable.api().rows().invalidate().draw();
})
})

thead输入{
宽度:100%;
}
复选框
名称
位置
办公室
年龄
开始日期
薪水
老虎尼克松
系统架构师
爱丁堡
61
2011/04/25
$320,800
加勒特温特斯
会计
东京
63
2011/07/25
$170,750
阿什顿考克斯
初级技术作者
旧金山
66
2009/01/12
$86,000
塞德里克·凯利
高级Javascript开发人员
爱丁堡
22
2012/03/29
$433,060
佐藤航空
会计
东京
33
2008/11/28
$162,700
布里尔·威廉姆森
集成专家
纽约
61
2012/12/02
$372,000
名称
位置
办公室
年龄
开始日期
薪水

您应该能够使用DataTables API搜索功能,该功能可以接受正则表达式。然后,您可以编写正则表达式来查找除复选框之外的搜索值。我还没试过,但应该可以。谢谢你!经过一段时间使它适合我们的项目,它就像一个魅力。