Jquery 数据表精确单词搜索
嗨,我正在使用,我想用一个确切的词过滤我的数据 我的表格数据如下所示Jquery 数据表精确单词搜索,jquery,regex,datatable,Jquery,Regex,Datatable,嗨,我正在使用,我想用一个确切的词过滤我的数据 我的表格数据如下所示 +-----+----------+ | num | status | +-----+----------+ | 1 | Active | +-----+----------+ | 2 | Inactive | +-----+----------+ | 3 | Active | +-----+----------+ 每当我搜索Active时,我也会看到所有Inactive。是否有任何方法可以过滤此内容
+-----+----------+
| num | status |
+-----+----------+
| 1 | Active |
+-----+----------+
| 2 | Inactive |
+-----+----------+
| 3 | Active |
+-----+----------+
每当我搜索Active
时,我也会看到所有Inactive
。是否有任何方法可以过滤此内容,以便状态列中的任何一个都只显示确切的单词
我的JS在下面
$(document).ready(function() {
var table = $('#items').DataTable( {
select: true,
responsive: true
} );
} );
我一直在通读这本书,但我不太明白它的意思。也许我需要写一些正则表达式
有一个例子(我想),但是我需要根据我的需要修改它
任何帮助或建议都将不胜感激。如果您认为这项任务最好有一个合适的人选
取消绑定
默认处理程序,每次执行精确匹配筛选。如果你有桌子
var table = $('#example').DataTable()
然后以这种方式使用精确匹配自定义过滤器
$('.dataTables_filter input').unbind().bind('keyup', function() {
var searchTerm = this.value.toLowerCase()
if (!searchTerm) {
table.draw()
return
}
$.fn.dataTable.ext.search.push(function(settings, data, dataIndex) {
for (var i=0;i<data.length;i++) {
if (data[i].toLowerCase() == searchTerm) return true
}
return false
})
table.draw();
$.fn.dataTable.ext.search.pop()
})
下面评论中的OP小提琴更新->
现在,
active
,vaio
等工作正常 希望这能有所帮助。在两端添加'\\b'
将使表格仅搜索整个单词
var regex = '\\b' + searchKey + '\\b';
<yourDataTable>.columns(<columnIndex>).search( regex, true, false).draw();
var regex='\\b'+searchKey+'\\b';
.columns().search(regex,true,false).draw();
可以通过这种方式过滤具有精确匹配的搜索结果-
table.column(index).search("^" + searchText + "$", true, false).draw();
更多信息-从这里开始尝试,如果使用服务器端脚本,则过滤器会更好。作为建议,状态
active
和inactive
可以被编号为值(0或1),并通过它进行过滤,不会出现不明确的结果。这是关于0和1@MarcosPérezGude的一个很好的建议,但这不意味着在表中也向最终用户显示0和1吗?理想情况下,我希望他们看到“活动”和“不活动”这两个词。它们在mysqldb中实际存储为0和1。我通过php将它们转换为字符串(活动/非活动),并将它们显示在表中。您还可以在数据库中看到->@johnny_s,您可以将其另存为int值(0、1、2等),并使用字符串值(1=活动、0=非活动、2=两者,等等)创建一个重新分区的表。过滤时,可以显示与int值相关的字符串值。如果您可以这样做,则数据表将呈现数字。我经常使用jQGrid,它与这样的技术完美结合。@johnny_s,我的错:(说到底,昨天可能太晚了-如果searchTerm
为空,则应该“重置”过滤器(可以通过简单的draw()
)-已经更新了答案和提琴。@johnny_s-我意识到我可能完全误解了你的问题。你不想要精确的匹配-你只想搜索整个单词并避免复合词。如果是这样的话,自定义筛选器不是nessecary,请参阅更新的答案和你的提琴更新->
table.column(index).search("^" + searchText + "$", true, false).draw();