DataTables - 使用单个下拉菜单在多列中搜索
Posted
技术标签:
【中文标题】DataTables - 使用单个下拉菜单在多列中搜索【英文标题】:DataTables - Search in multiple columns with a single drop down 【发布时间】:2017-09-09 02:07:39 【问题描述】:我正在使用 DataTables,我正在尝试在带有下拉列表的表中搜索结果。但不是搜索一列,我需要搜索两个特定列。
以下语法适用于单列,但如何处理多列?
var table = $('#example1').DataTable();
$("#filter").on('change', function()
table.column([4]).search($(this).val()).draw();
);
我尝试这样做,但是当我使用此代码时,它只搜索第一列中的结果,例如第 4 列。并忽略其余部分。
table.column([4,5]).search($(this).val()).draw();
什么是正确的方法?
【问题讨论】:
How can I search multiple columns in DataTables的可能重复 不是重复的,因为范围搜索在不同输入的给定范围内对单个列执行搜索。 @Terry 不一样,抱歉。我需要在两个特定列中进行搜索。 对于您的场景,这里是另一个名为 fnMultiFilter 的数据表扩展,它在多列上进行搜索。 jsfiddle.net/mmushtaq/v65db2ez 。看到这个 【参考方案1】:让我们在这里总结所有事情。它也会帮助其他人。
您可以通过以下方式实现:
table.column(4).search(this.value).column(5).search(this.value).draw();
它将在 4 列上执行搜索(4 是列的索引),然后根据提供的过滤值过滤来自 5 列的数据,最后绘制表格。
要记住的一点是,过滤器应用于两列,因此两列都必须包含匹配的数据。
Here is its filddle
这可以通过使用 fnMultiFilter 来实现,因为它的文档说明:
此插件为 DataTables 添加了在单个调用中设置多个列过滤条件的能力(如果使用服务器端处理,则特别有用)。与列 sName 参数结合使用,只需传入一个对象,其中键/值对是您希望搜索的列,以及您希望搜索的值。
【讨论】:
【参考方案2】:使用columns() 代替 column():
var table = $('#example1').DataTable();
$("#filter").on('change', function()
table.columns([4,5]).search($(this).val()).draw();
);
【讨论】:
【参考方案3】:从文档中,您应该使用.columns()
(注意复数)
【讨论】:
【参考方案4】:对于多列之间的 OR 搜索,请使用禁用搜索列
columns.searchableSince: Enable or disable search on the data in a certain column.
或者,您也可以使用 html 属性从搜索中删除列
<th data-searchable=false>
【讨论】:
以上是关于DataTables - 使用单个下拉菜单在多列中搜索的主要内容,如果未能解决你的问题,请参考以下文章
如何让下拉选择从 Django 模型中填充模板中的 DataTables 表?