2011-12-22 73 views
18

试图仅显示与在搜索栏中输入的搜索词完全匹配。jQuery DataTables - 按精确匹配过滤列

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

因此,如果输入123,我不想要12345,91239等显示。只有123

在常见问题解答页面上看到bRegex的一些信息,但它不适用于我。有任何想法吗?

回答

20

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

但对于那些有兴趣,这里是答案:

oTable.fnFilter("^"+TERM+"$", COLUMN , true); //Term, Column #, RegExp Filter 
+0

嗨,先生,我有同样的问题。我想知道我应该在哪里放置您提供的代码?因为我想尝试它,如果它能解决我的问题。希望你会回复。 – Louie 2016-05-11 15:27:02

7
$(document).ready(function() { 
    $('#example').dataTable({ 
     "oSearch": {"bSmart": false} 
    }); 
}) 

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

从文档

“当‘bSmart’数据表将使用它的智能过滤方法(以 字比赛在数据中的任何一点),当为假时,这将不会被 完成。“

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每列,以及指定每列手动正则表达式。

+0

不太我所期待的。所以基本上我有3个自定义搜索字段用于过滤表格。我只希望其中一个字段使用精确搜索。对于其他领域,我希望他们仍然使用智能搜索。 – JimmyJammed 2011-12-22 21:54:11

+0

同样在旁注中,bSmart基本上意味着如果我输入“John Smith”,它会找到这些单词的任意组合(即“Smith John”,“John Jack Smith”等。) – JimmyJammed 2011-12-22 21:57:08

+0

Ive up dated my answer – 2011-12-22 22:02:59

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

其中filter_value是在过滤器字段中输入的字符串。

+1

没有返回任何结果...? – JimmyJammed 2011-12-22 21:51:57

22

这会给你一个确切的结果为一列。

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

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

-1

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

1

如果你想精确匹配从一开始,你可以试试这个代码,

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(); 
    }); 
+0

$('#filterrow> th:nth-​​child(2)> input')是一个选择器 – Tariq 2017-11-07 08:02:26