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。希望这能解决你的问题!