我正在使用DataTables,我正在尝试使用下拉列表在表格中搜索结果。但是,我需要搜索两个特定的列,而不是搜索一列。
以下语法适用于单个列,但我如何使用多列?
var table = $('#example1').DataTable();
$("#filter").on('change', function() {
table.column([4]).search($(this).val()).draw();
});
我试过这样做,但是当我使用这个代码时,它只搜索第一列中的结果,例如。第四栏。并忽略其余的。
table.column([4,5]).search($(this).val()).draw();
适当的方法是什么?
答案 0 :(得分:4)
让我们总结一下这里的所有事情。它也会帮助其他人。
您可以按照以下方式实现此目的:
table.column(4).search(this.value).column(5).search(this.value).draw();
它将在4列上执行搜索(4是列的索引),之后它将根据提供的过滤器值从5列过滤数据,最后它将绘制表。
要记住的一点是,Filter应用于两列,因此两列都必须包含匹配的数据。
这可以通过使用fnMultiFilter来实现,因为文档解释了:
此插件为DataTables添加了在单个调用中设置多个列过滤术语的功能(如果使用服务器端处理,则特别有用)。与列sName参数结合使用时,只需传入一个对象,其中键/值对是您要搜索的列,以及您要搜索的值。
答案 1 :(得分:2)
使用columns()代替列():
var table = $('#example1').DataTable();
$("#filter").on('change', function() {
table.columns([4,5]).search($(this).val()).draw();
});
答案 2 :(得分:1)
从文档中,您应该使用.columns()
(注意复数)
答案 3 :(得分:0)
要在多个列之间进行OR搜索,请使用禁用列搜索
columns.searchableSince: Enable or disable search on the data in a certain column.
或者,您也可以使用HTML属性从搜索中删除列
<th data-searchable=false>