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
看起来您可以为每列设置bSmart
和bRegex
以及为每列指定手动正则表达式。
如果你想从一开始就完全匹配,你可以尝试这个代码,
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(); });
search
function的语法是:
搜索(输入,正则表达式,智能搜索,case_insensitive)
我们在这种情况下禁用智能搜索 ,因为当智能搜索设置为true时, search
function会在内部使用正则表达式。 否则,这会在我们的正则表达式和search
function使用的正则表达式之间产生冲突。
有关更多信息,请查看DataTable中的以下文档:
柱()。搜索()
希望它有用!
table.column(col_num).search(filter_value +“$”,true,true,false).draw();