Javascript 正在使用多个值搜索datatable,但未返回完全匹配
我正在尝试使用datatable中的下拉选项筛选多个值,它看起来如下所示:Javascript 正在使用多个值搜索datatable,但未返回完全匹配,javascript,jquery,datatables,Javascript,Jquery,Datatables,我正在尝试使用datatable中的下拉选项筛选多个值,它看起来如下所示: $(文档).ready(函数(){ var table=$(“#示例”).DataTable({ “订单”:[1,“asc”], //“长度菜单”:[[100200500,-1],[100200500,'All'], “页面长度”:-1, “长度变化”:错误, “bFilter”:“false”, “可搜索”:错误, 是的, “bPaginate”:错误, “bInfo”:假 }); var alreadySelect
$(文档).ready(函数(){
var table=$(“#示例”).DataTable({
“订单”:[1,“asc”],
//“长度菜单”:[[100200500,-1],[100200500,'All'],
“页面长度”:-1,
“长度变化”:错误,
“bFilter”:“false”,
“可搜索”:错误,
是的,
“bPaginate”:错误,
“bInfo”:假
});
var alreadySelectedArr=[];
$('.filterRow th')。每个(函数(i){
alreadySelectedArr[i]=[];
var title=$(this.text();
var select=$('All- 全选
.appendTo($(this.empty());
让includedArr=[];
设colData=table.column(i).data().unique().sort(函数(a,b){返回a-b}).each(函数(d,j){
如果(d!=“”){
var cell=table.column(i).nodes().toArray().find(f=>f.innerHTML.trim()==d);
var searchValue=$(单元格).attr(“数据搜索”);
alreadySelectedArr[i]。推送(searchValue);
$('multiSelectMatrixCol'+i).append(''+d+'');
select.find('ul').append(“
- “+d+”
”);
}
});
设$all=$('#all'+i);
$all.change(函数(){
如果($(this).is(':checked')){
$('.checkbox col-'+i).prop('checked',true);
}否则{
$('.checkbox col-'+i).prop('checked',false);
}
});
选择.find('.dropdown menu a input.other复选框')。打开('change',函数(e){
var lenchk=$(this.closest('ul').find('other checkbox:checkbox');
var lenchkChecked=$(this).closest('ul').find('.other复选框:checkbox:checked');
if(lenchk.length==lenchkChecked.length){
$(this).closest('ul').find('selectAll:checkbox').prop('checked',true);
}否则{
$(this).closest('ul').find('selectAll:checkbox').prop('checked',false);
}
});
选择.查找('.下拉菜单a输入[type=“checkbox”]')。打开('change',函数(e){
var术语=$(此).laxest(“li”).attr(“数据值”);
var idx=$.inArray(术语,alreadySelectedArr[i]);
让行动=推动;
设selectedArr=[];
让selectedTextArr=[]
$('input[name=“checkedVal'+i+'[]”]:checked')。每个(函数(){
选择arr.push(escapeRegExp(this.value));
选择dextarr.push($(this.parent('label').attr('title'));
});
让我们选择BoxText=“全部”;
让我们选择boxhovertext=“全部”;
如果(selectedTextArr.length>0){
if($(this).closest('ul').find('.selectAll:checkbox').prop('checked')){
表.第(i)列.search(“”).draw();
选择BoxText='All';
selectBoxHoverText=selectBoxText;
}否则{
selectBoxText=selectedTextArr[0]+“…”;
selectBoxHoverText=selectedTextArr.join();
}
}
设$mst=$('#mst'+i);
$mst.html(selectBoxText);
$mst.closest('button').attr('title',selectBoxHoverText);
if(!$(this).closest('ul').find('selectAll:checkbox').prop('checked')){
table.column(i).search(“^”+selectedArr.join(“|”)+“$”,true,false,true.draw();
}
});
});
} );
函数escapeRegExp(字符串){
返回字符串.replace(/[.*+?^${}()\[\]\\]/g,\\$&');
}
span.multiselect native select{position:relative}span.multiselect-native-select{border:0!重要;clip:rect(0 0 0 0 0 0)重要;高度:1px!重要;边距:-1px-1px-1px-3px!重要;溢出:隐藏!重要;填充:0!重要;位置:绝对!重要;宽度:1px!重要;左侧:50%;顶部:30px}.multiselect容器{位置:绝对;列表样式类型:无;边距:0;填充:0}。多选容器。输入组{边距:5px}。多选容器。多选重置。输入组{宽度:93%}。多选容器>li{填充:0}。多选容器>li>a.multiselect-all标签{字体重量:700}。多选容器>li.multiselect-group标签{margin:0;padding:3px20px;height:100%;font-weight:700}。multiselect-container>li.multiselect-group-clickable标签{cursor:pointer}。multiselect-container>li>a{padding:0}。multiselect-container>li>a>标签{margin:0;height:100%;cursor:pointer;font-weight:400;padding:3px20px 3px 40px}.multiselect container>li>a>label.checkbox.multiselect container>li>a>label.radio{margin:0}.multiselect container>li>a>label>input[type=checkbox]{margin bottom:5px}.btn group>btn组:第n个子(2)>.multiselect.btn{边框左上半径:4px;边框左下半径:4px}.form inline.multiselect container label.checkbox.form inline.multiselect container label.radio{padding:3px 20px 3px 40px}.form inline.multiselect container li a label.radio输入[type=radio]{margin left:-20px;margin right:0}
N
10
1.
01
10
20
N
2.
table.column(i).search("^(" +selectedArr.join('|') + ")$", true, false, true).draw();