jQuery DataTables – 按完全匹配过滤列

尝试仅显示与搜索栏中输入的搜索词完全匹配。

例如,我有一个按ID#过滤的搜索栏。 我只想要与输入的确切#匹配的记录。

因此,如果输入123 ,我不希望显示91239等。 只有123

在FAQ页面上看到了一些关于bRegex信息,但它对我不起作用。 有任何想法吗?

这将为您提供列的精确结果。

  table.column(i) .search("^" + $(this).val() + "$", true, false, true) .draw(); 

即。 搜索(输入,正则表达式,智能,caseInsen)

好的解决了这个问题。 但是,由于我使用完全匹配的列有时包含多个以逗号分隔的ID#,因此我无法使用完全匹配搜索。

但对于那些感兴趣的人,这里是答案:

 oTable.fnFilter( "^"+TERM+"$", COLUMN , true); //Term, Column #, RegExp Filter 
 $(document).ready( function() { $('#example').dataTable( { "oSearch": {"bSmart": false} } ); } ) 

尝试使用bSmart选项并将其设置为false

从文档中

“当”bSmart“DataTables将使用它的智能过滤方法(在数据中的任何一点进行单词匹配)时,如果为false则不会这样做。”

UPDATE

我找到了这个:

 oSettings.aoPreSearchCols[ iCol ].sSearch = "^\\s*"+'1'+"\\s*$"; oSettings.aoPreSearchCols[ iCol ].bRegex = false; oSettings.aoPreSearchCols[ iCol ].bSmart= false; 

在此链接http://www.datatables.net/forums/discussion/4096/filtering-an-exact-match/p1

看起来您可以为每列设置bSmartbRegex以及为每列指定手动正则表达式。

如果你想从一开始就完全匹配,你可以尝试这个代码,

  var table = $('#myTable').DataTable() $('#filterrow > th:nth-child(2) > input').on( 'keyup change', function () { table .column( $(this).parent().index()+':visible' ) .search( "^" + this.value, true, false, true ) .draw(); } ); 

Datatables的当前版本支持在列的基础上使用实际精确匹配。

 table.column(i) .search($(this).val(), false, false, false) .draw(); 

文档解释了每个标志。

 $(document).ready(function() { tbl = $('#example').dataTable(); tbl.fnFilter("^" + filter_value + "$"); }); 

其中filter_value是在filter字段中输入的字符串。

您可以使用正则表达式进行精确匹配,如下所示:

 var table = $('#dt').DataTable(); $('#column3_search').on('keyup', function () { // Note: column() accepts zero-based index meaning the index of first column is 0, second column is 1 and so on. // We use `2` here as we are accessing 3rd column whose index is 2. table.column(2) .search("^" + this.value + "$", true, false, true) .draw(); }); 

searchfunction的语法是:

搜索(输入,正则表达式,智能搜索,case_insensitive)

我们在这种情况下禁用智能搜索 ,因为当智能搜索设置为true时, searchfunction会在内部使用正则表达式。 否则,这会在我们的正则表达式和searchfunction使用的正则表达式之间产生冲突。

有关更多信息,请查看DataTable中的以下文档:

柱()。搜索()

希望它有用!

table.column(col_num).search(filter_value +“$”,true,true,false).draw();