fnFilter不是一个函数

rav*_*rav 1 datatable jquery datatables

我正在尝试在DataTables列中搜索在多选框中选择的值.我将多选框中选择的值读取到变量,并用"|"连接.然后我尝试使用fnFilter进行搜索,我的代码如下:这是我启动表的方式:

var table = jQuery(tableId).DataTable(settings);
Run Code Online (Sandbox Code Playgroud)

其中设置是数据表的全局设置.这是jQuery代码:

jQuery('#box2').change(function() {
                var foo = [];
                jQuery('#box2 :selected').each(function(j, selected){
                  foo[j] = jQuery(selected).text();               
                });
                var m= foo.join("|");
                table.fnFilter(m, 2, true, false, true, true);
});
Run Code Online (Sandbox Code Playgroud)

这将在控制台中返回以下错误:

Uncaught TypeError: table.fnFilter is not a function
Run Code Online (Sandbox Code Playgroud)

我的代码有什么问题吗?或者有更好的方法吗?

小智 7

数据表1.10具有不同的api.

$().DataTable
Run Code Online (Sandbox Code Playgroud)

与...不同

$().datatable
Run Code Online (Sandbox Code Playgroud)

像这样改变你的api:

table.search(your_key).draw();
Run Code Online (Sandbox Code Playgroud)


Ade*_*eel 5

在旧版本的 DataTable 中,您必须使用fnFilter,对于 DataTable 1.10 版,您必须使用search.

我可以看到您正在使用的代码jQuery(tableId).DataTable(settings);(版本 1.10)

所以,解决方案是:

var table = jQuery(tableId).DataTable(settings);
table.search(value).draw();
Run Code Online (Sandbox Code Playgroud)

但是,在较旧的 DataTable 版本中,由 small d发起的表类似这样jQuery(tableId).dataTable();。因此,在这种情况下,您可以使用fnFilter

var table = jQuery(tableId).dataTable();
table.fnFilter(value);
Run Code Online (Sandbox Code Playgroud)

阅读更多关于DataTable - fnFilterDataTable - 搜索