jQuery DataTables - 通过精确匹配过滤列
尝试仅显示与搜索栏中输入的搜索词完全匹配的内容。
例如,我有一个按 ID# 进行过滤的搜索栏。我只想显示与输入的确切 # 匹配的记录。
因此,如果输入 123
,我不希望显示 12345
、91239
等。只有123
。
在常见问题解答页面上看到了一些有关 bRegex
的信息,但它对我不起作用。有什么想法吗?
Trying to only display exact matches to the search term entered in the search bar.
For instance, I have a search bar that filters by ID#. I want only records that match the exact # entered to display.
So if 123
is entered, I don't want 12345
, 91239
, etc etc to be displayed. Only 123
.
Saw some info about bRegex
on the FAQ page, but it's not working for me. Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
这将为您提供列的准确结果。
IE 。搜索(输入、正则表达式、智能、caseInsen)
This will give you exact result for a column.
ie . search( input , regex, smart , caseInsen )
好的解决了问题。但是,由于我使用精确匹配的列有时包含多个以逗号分隔的 ID #,因此我将无法使用精确匹配搜索。
但对于那些感兴趣的人来说,答案如下:
Ok solved the problem. However, since the column I am using the exact match on sometimes contains multiple ID #s seperated by commas, I wont be able to use an exact match search.
But for those interested, here is the answer:
尝试使用 bSmart 选项并将其设置为 false
来自文档
更新
我发现了这个:
在此链接 http: //www.datatables.net/forums/discussion/4096/filtering-an-exact-match/p1
看起来你可以设置
bSmart
和每列bRegex
以及为每列指定手动正则表达式。Try using the bSmart option and setting it to false
From the documentation
UPDATE
I found this:
at this link http://www.datatables.net/forums/discussion/4096/filtering-an-exact-match/p1
looks like you can set
bSmart
andbRegex
per column as well as specifying a manual regex per column.您可以使用正则表达式进行精确匹配,如下所示:
search
函数的语法为:在这种情况下,我们禁用智能搜索,因为
search
函数在设置智能搜索时在内部使用正则表达式为真。否则,这会在我们的正则表达式和search
函数使用的正则表达式之间造成冲突。有关详细信息,请查看 DataTable 中的以下文档:
column().search()
希望对您有帮助!
You can use regular expression for exact matching as following:
The syntax of the
search
function is:We disable smart search in this case because
search
function uses regular expression internally when smart search is set to true. Otherwise, this creates conflict between our regular expression and the one that is used bysearch
function.For more information, check out the following documentation from DataTable:
column().search()
Hope it's helpful!
只需将正则表达式和 smart 设置为 false 即可。然后你就得到了准确的结果。
just set the regex and smart false. and you get the exact result.
如果你想从一开始就完全匹配,你可以尝试这个代码,
If you want the exact match from the beginning you can try this code,
其中
filter_value
是在过滤器字段中输入的字符串。Where
filter_value
is the string entered in the filter field.正则表达式对我来说不是一个方便的解决方案,因为它需要代码中存在很多异常。
因此,我的解决方案是在 jquery.datatable.min.js 中添加一个新选项“exactvalue”,默认值为 false(以避免兼容性问题)
这个新选项将与帖子中的其他数据一起发送:
之后,更改php ssp 类接受新值。修改 ssp 中的过滤器函数更改:
并重复单个列过滤
现在,在您的表 columnDefs 定义中,只需添加
,您的列将使用精确值进行过滤。
Regex was not a handy solution for me as it require lot of exceptions in the code.
So, my solution was to add in the jquery.datatable.min.js a new option 'exactvalue' with default value false (to avoid compatibility problems)
This new option will be sent along the other data in the post:
After that, change the php ssp class to accept the new value. Modify filter function in the ssp changing:
and repeat on the individual column filtering
Now, in your table columnDefs definition, simply add
and your column will be filtered with exact value.
当前版本的 Datatables 支持在列的基础上使用真正的精确匹配。
文档 解释了每个标志。
The current versions of Datatables supports using real exact matching on a column basis.
The documentation explains each flag.
table.column(col_num).search(filter_value + "$", true, true, false).draw();
table.column(col_num).search(filter_value + "$", true, true, false).draw();