Jquery 带有'的正则表达式;或';用于全局搜索的数据表的条件
我想改变数据表的全局搜索以处理“或”条件 我可以使用Jquery 带有'的正则表达式;或';用于全局搜索的数据表的条件,jquery,regex,datatables,jquery-datatables,Jquery,Regex,Datatables,Jquery Datatables,我想改变数据表的全局搜索以处理“或”条件 我可以使用 $('#searchBox').keyup( function(e) { if(e.keyCode==13){ var arr = $('#searchBox').val().split(' '); var pattern = (arr[0]) + '|' + (arr[1]); oTable.fnFilter(pattern, 1, true);
$('#searchBox').keyup( function(e) {
if(e.keyCode==13){
var arr = $('#searchBox').val().split(' ');
var pattern = (arr[0]) + '|' + (arr[1]);
oTable.fnFilter(pattern, 1, true);
}
} );
这将使第1列的搜索结果同时显示第一个和第二个单词结果。如何对所有列实现相同的设置?您只需将列定义为
null
:
$('#searchBox').keyup( function(e) {
if(e.keyCode==13){
var arr = $('#searchBox').val().split(' ');
var pattern = (arr[0]) + '|' + (arr[1]);
oTable.fnFilter(pattern, null, false);
}
});
请参见小提琴->-以及
fnFilter
文档->
请注意,列是从零开始的。在上面的代码中,您在第二列排序(如果您不知道的话)
更新。我还会做一些数组检查。假设输入了一个带空格的字符串,如
ab
。但是如果没有,那么就不应该使用|
,而且您最终会搜索未定义的。如果输入了两个以上的空格分隔的搜索标准,比如abcd
$('#searchBox').keyup( function(e) {
if(e.keyCode==13){
var arr = $('#searchBox').val().split(' ');
var pattern ='';
arr.forEach(function(item) {
if (pattern!='') pattern+='|';
pattern+=item;
});
oTable.fnFilter(pattern, null, true, false, true, true);
}
});
通过省略列限制:oTable.fnFilter(pattern,null,true)?尝试搜索“壁虎PSP”。只有Gecko的结果才会出现。我还注意到,oTable.fnFilter(pattern,null,true)仅适用于列0,而不适用于任何其他后续操作columns@user544079哎呀!但有趣的是,反对者“PSP壁虎”成功了。显然,第四个参数“智能过滤”并不那么智能:)必须将其设置为(false)-默认情况下为true。更新了答案和最后一个JSFIDLE。希望这能解决你的问题!