具有“OR”条件的正则表达式用于全局搜索的dataTables

时间:2014-03-07 00:08:04

标签: jquery regex datatables jquery-datatables

我想改变dataTables的全局搜索来处理'OR'条件

我可以使用

获取指定列的“OR”条件
$('#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列的搜索结果显示第一个和第二个单词结果。如何为所有列实现相同的目标?

1 个答案:

答案 0 :(得分: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);
   }
});

见小提琴 - >的 http://jsfiddle.net/9UtVw/
- 以及fnFilter文档 - >的 http://www.datatables.net/ref#fnFilter

请注意,列基于零。在上面的代码中,您可以对第二列进行排序(就在您不知道的情况下)。


<强>更新即可。我也会做一些数组检查。您假设输入了一个带有空格的字符串,如a b。但是,如果没有,则不应使用|,除非您最终在undefined之后搜索。如果输入两个以上的空格分隔搜索标准如a b c d怎么办?

$('#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);
   }
});

小提琴 - &gt;的 http://jsfiddle.net/stbRt/