Jquery fnFilter不是一个函数

Jquery fnFilter不是一个函数,jquery,datatable,datatables,Jquery,Datatable,Datatables,我试图在DataTables列中搜索在多选框中选择的值。我将多选框中选择的值读取到一个变量中,并用“|”将它们连接起来。然后我尝试使用fnFilter进行搜索,我的代码如下: 以下是我创建表格的方式: var table = jQuery(tableId).DataTable(settings); 其中设置是datatables全局设置。以下是jQuery代码: jQuery('#box2').change(function() { var foo = [];

我试图在DataTables列中搜索在多选框中选择的值。我将多选框中选择的值读取到一个变量中,并用“|”将它们连接起来。然后我尝试使用fnFilter进行搜索,我的代码如下: 以下是我创建表格的方式:

var table = jQuery(tableId).DataTable(settings);
其中设置是datatables全局设置。以下是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);
});
这将在控制台中返回以下错误:

Uncaught TypeError: table.fnFilter is not a function

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

我也面临同样的错误,下面的解决方案确实对我有效

    $(document).ready(function() {

        // if you initialize with DataTable() the old jQuery object function fnFilter() is unavailabl
        // var table = $('#populateTable').DataTable({ 

        var table = $('#populateTable').dataTable({
            searching: true,
            info: true,
            lengthChange: true,
            processing: true,
            serverSide: true,
            ajax: "product/getProductDataset",
            dataSrc: 'data',
            columns: [
                { data: 'product_title' },
                { data: 'product_category' },
                { data: 'product_brand' },
                { data: 'price_crawled_date' },
                { data: 'product_lowest_price', orderable: false },
                { data: 'actions', orderable: false }
            ]
        }); // End: DataTable

        $('div.dataTables_filter input').unbind();
        $('div.dataTables_filter input').bind('keyup', function(e) {
            if(e.keyCode == 13) {
                table.fnFilter(this.value);
            }
        });
    });

快乐编码:)数据表1.10具有不同的api

$().DataTable
不同于

$().datatable
按如下方式更改您的api:

table.search(your_key).draw();

我也犯了同样的错误。以下几点对我很有用:

var dataTable = $('#myTableId').dataTable();
不是

var dataTable = $('#myTableId').DataTable();

将DataTable更改为DataTable

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

正如我看到的,您使用的代码是
jQuery(tableId).DataTable(settings)(版本1.10)

因此,解决办法是:

var table = jQuery(tableId).DataTable(settings);
table.search(value).draw();
但是,在较旧的DataTable版本中,由小型d启动的表类似于
jQuery(tableId).DataTable()。因此,在这种情况下,您可以使用
fnFilter

var table = jQuery(tableId).dataTable();
table.fnFilter(value);

阅读更多关于和

的信息,我觉得发布的代码没问题。你能做一个有用的片段吗?有两件事需要检查。你真的调用了
DataTable
,而不是
DataTable
?如果你做了后者,你会得到那个错误。您是否在设置中将
filter
bFilter
设置为false?@BobRodes我确实将其称为DataTable,但在我的设置中未包含任何设置。有没有其他方法可以达到我的目的?谢谢@PraveenKumar感谢您的回复。还有其他方法可以实现我的目的吗?@BobRodes,如果您使用
DataTable()
初始化,则相反,旧的jQuery对象函数
fnFilter()
不可用。然而,
jQuery(tableId).dataTable().fnFilter(m,2,true,false,true,true)
将起作用,即使该表已经用
dataTable()
初始化,您只需返回jQuery对象即可。LOL这将是一个有趣的查找方法。干杯,伙计!