2017-04-27 60 views
1

如何在JQuery Datable的搜索栏中搜索完全匹配我尝试使用fnFilter,但仍未返回完全匹配。在DataTable JQuery中筛选字符串的确切位置

$(document).ready(function() { 
    var oTable = $('#datacal_table').DataTable({"order": [[4, "asc"]]}); 
    oTable.fnFilter("^"+$(this).val()+"$", 4, true); 
    }); 

例如,我只是看着搜索“活跃”,但会发生什么是“不活跃”的话也会在结果中返回。我该怎么做我需要能够只搜索确切的字符串。

Post image

编辑

我试过的inuka的链接How to search for an exact string in a jQuery DataTable?

而且好像我的文字类与搜索干扰一个,我该如何解决这个问题?我想继续使用我的课文,以便它是彩色的。

<td id="status"> 
     <span class = "label {{ getStatusColor($data->status) }}" 
     id = "status_{{ $data->id }}"> 
     {{ getStatusText($data->status) }} 
     </span> 
</td> 

当我只保留{{getStatusText}}的搜索作品,但是当我尝试对它进行分类时,它不会。

<script type="text/javascript"> 
    $(document).ready(function() { 
    var table = $('#datacal_table').DataTable({ 
     "order": [[4, "asc"]] 
    }); 
    $('.dataTables_filter input', table.table().container()) 
    .off('.DT') 
    .on('keyup.DT cut.DT paste.DT input.DT search.DT', function(e) { 
     var term = $.trim(this.value); 
     if (term !== ""){ 
     var termRegExp = new RegExp('^' + $.fn.dataTable.util.escapeRegex(term) + '$', 'i'); 

     $.fn.dataTable.ext.search.push(
      function (settings, data, dataIndex){ 
      var isFound = false; 
      $.each(data, function (index, value) { 
       if (termRegExp.test(value)){ isFound = true; } 
       return !isFound; 
      }); 
      return isFound; 
      } 
     ); 
     } 

     table.draw(); 

     if (term !== "") { 
     $.fn.dataTable.ext.search.pop(); 
     } 
    }); 
    }); 
    </script> 
+0

[jQuery DataTables - 通过精确匹配过滤列]可能的重复(http://stackoverflow.com/questions/8609577/jquery-datatables-filter-column-by-exact-match) – CodeMonkey

+0

也可以查看下[搜索完全匹配,并突出显示jQuery数据表正则表达式](http://stackoverflow.com/questions/29783136/search-exact-match-and-highlight-jquery-datatable-regex)和[如何在jQuery中搜索确切的字符串DataTable?](http://stackoverflow.com/questions/33122994/how-to-search-for-an-exact-string-in-a-jquery-datatable) – CodeMonkey

+1

对不起,我没有提供任何更多的细节我尝试了其中一个部分工作的链接,但看到我的更新后的帖子出现了另一个问题。 – user827391012

回答

1

以下的答案必须从this后会给你一个搜索词的答案你的HTML表格结构。

$('#datacal_table').DataTable({ 
    "columnDefs": [{ 
     "targets": [4], 
     "render": function (data, type, full, meta) { 
     if(type === 'filter'){ 
      return $('#datacal_table').DataTable().cell(meta.row, meta.col).nodes().to$().find('span').text(); 
     } else { 
      return data; 
     } 
     } 
    }] 
}); 

根据Datatables documentation这个columnDefs.targets会给你只匹配指定的列名值的选项。 "targets": [4]将仅着重于您的状态列下的值。

0

试试这个代码

var oTable = $('.datatable').DataTable(); 
$('.dataTables_filter input').keyup(function() { 
     oTable.fnFilter("^"+$(this).val(),0,true,false); 
}); 

工作环节http://codepen.io/subbu1191/pen/GmrvNd

1.{string}: String to filter the table on 
2.{int|null}: Column to limit filtering to 
3.{bool} [default=false]: Treat as regular expression or not 
4.{bool} [default=true]: Perform smart filtering or not 
5.{bool} [default=true]: Show the input global filter in it's input box(es) 
6.{bool} [default=true]: Do case-insensitive matching (true) or not (false) 

你必须做出智能过滤假以获得正则表达式工作