Jquery fnFilter不是一个函数
我试图在DataTables列中搜索在多选框中选择的值。我将多选框中选择的值读取到一个变量中,并用“|”将它们连接起来。然后我尝试使用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 = [];
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这将是一个有趣的查找方法。干杯,伙计!