fnFilter值'Active'无法正常工作

时间:2017-11-08 17:01:44

标签: jquery datatables

我无法以编程方式搜索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" />

谢谢!

1 个答案:

答案 0 :(得分:1)

问题在于&#34; Inactive&#34;包括字符串&#34; active&#34;,默认情况下,fnFilter()不会仅搜索整个单词,而是进行不区分大小写的搜索。您可以通过更改文本&#34;非活动&#34;来验证这一点。代替:

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

$('#testbutton').on('click', function(e) {
     $('#mytable').dataTable().fnFilter('Active');
});
&#13;
<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" />
&#13;
&#13;
&#13;

至少有两种方法可以解决这个问题:

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