Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 数据表精确单词搜索_Jquery_Regex_Datatable - Fatal编程技术网

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();