jquery fnFilter值“Active”不工作

kadbb459  于 2023-05-17  发布在  jQuery
关注(0)|答案(2)|浏览(76)

我在以编程方式搜索DataTable中的字符串“Active”时遇到问题。如果我把表改为'ActiveTest',fnFilter就能正常工作,并正确地过滤它。但是,它似乎不适用于字符串“Active”。有人知道为什么吗?
另外,是否有任何编程方法可以将表过滤到仅具有特定值的列,而不在搜索输入框中显示该值?我宁愿在我的页面上有一个复选框,上面写着“仅显示活动”,这将过滤它,然后仍然允许用户使用搜索框过滤更多。
下面是我现在尝试向下过滤表的方式

$('#selector').dataTable().fnFilter('Active');

这会导致“搜索”输入框显示“活动”,但什么也不会发生。这对表中的其他字符串很好,但是字符串'Active'看起来像是保留的,因为它没有过滤。即使我在搜索框中手动输入“活动”,它仍然不会过滤。

示例提供的片段

$('#mytable').DataTable();

$('#testbutton').on('click', function(e) {
     $('#mytable').dataTable().fnFilter('Active');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.datatables.net/v/dt/dt-1.10.16/datatables.min.js"></script>
<table id="mytable">
  <thead>
    <tr>
      <th>name</th>
      <th>status</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>john doe</td>
      <td>Active</td>
    </tr>
    <tr>
      <td>jane doe</td>
      <td>Inactive</td>
    </tr>
  </tbody>
</table>

<input type="button" id="testbutton" value="filter" />

谢谢你!

pxy2qtax

pxy2qtax1#

问题是单词“Inactive”包含字符串“active”,默认情况下,fnFilter()不会只搜索整个单词,而是不区分大小写进行搜索。您可以通过更改文本“Inactive”来验证这一点:

$('#mytable').DataTable();

$('#testbutton').on('click', function(e) {
     $('#mytable').dataTable().fnFilter('Active');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.datatables.net/v/dt/dt-1.10.16/datatables.min.js"></script>
<table id="mytable">
  <thead>
    <tr>
      <th>name</th>
      <th>status</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>john doe</td>
      <td>Active</td>
    </tr>
    <tr>
      <td>jane doe</td>
      <td>Foo</td>
    </tr>
  </tbody>
</table>

<input type="button" id="testbutton" value="filter" />

你至少有两个选择来解决这个问题:

  • 您可以启用区分大小写的匹配(第6个参数,布尔值),如果这足以满足您的需要
  • 您可以启用正则表达式(第三个参数,布尔值)并使用单词边界来只匹配整个单词
11dmarpk

11dmarpk2#

我也有同样的问题。这就是我如何解决我的问题:

$('#mytable').dataTable().fnFilter("^Active$", 7, true);
  • "^Active$"是一个正则表达式,匹配任何以单词“Active”开头并以单词“Active”结尾的文本。
  • "Active"是一个字符串,只匹配文本“Active”。
  • 7:这是文本将匹配的列的列索引。
  • true:这指定文本应该区分大小写进行匹配

相关问题