我在以编程方式搜索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" />
谢谢你!
2条答案
按热度按时间pxy2qtax1#
问题是单词“Inactive”包含字符串“active”,默认情况下,
fnFilter()
不会只搜索整个单词,而是不区分大小写进行搜索。您可以通过更改文本“Inactive”来验证这一点:你至少有两个选择来解决这个问题:
11dmarpk2#
我也有同样的问题。这就是我如何解决我的问题:
"^Active$"
是一个正则表达式,匹配任何以单词“Active”开头并以单词“Active”结尾的文本。"Active"
是一个字符串,只匹配文本“Active”。