fnFilter 值 'Active' 不起作用

问题描述 投票:0回答:2

我在以编程方式在 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" />

谢谢!

jquery datatables
2个回答
1
投票

问题是单词“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 个参数,布尔值)
  • 您可以启用正则表达式(第三个参数,布尔值)并使用单词边界仅匹配整个单词

0
投票

我遇到了同样的问题。这就是我解决问题的方法:

$('#mytable').dataTable().fnFilter("^Active$", 7, true);
  • "^Active$"
    是匹配任何以单词“Active”开头并以单词“Active”结尾的文本的正则表达式。

  • "Active"
    是一个只匹配文本“Active”的字符串。

  • 7:这是文本所在列的列索引 匹配。

  • true:这指定文本应区分大小写

© www.soinside.com 2019 - 2024. All rights reserved.