2016-07-27 43 views
0

我想在DataTables列中搜索在多选框中选择的值。我将多选框中选定的值读入一个变量,并用“|”将它们加入。然后我试图使用fnFilter的搜索,和我的代码去如下: 这是我发起表:fnFilter不是函数

var table = jQuery(tableId).DataTable(settings); 

其中设置的数据表全局设置。这里是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 

它是什么错我的代码?或者有没有更好的方法来做到这一点?

+0

张贴的代码看起来还好我。你能做一个工作片段吗? –

+0

有两件事要检查。你真的调用过'DataTable'而不是'dataTable'吗?如果你做了后者,你会得到这个错误。您是否在设置中将“filter”或“bFilter”设置为false? – BobRodes

+0

@BobRodes我确实把它叫做DataTable,我没有在我的设置中包含这些。有没有其他的方式去做我想做的事情?谢谢! – rav

回答

0

我正面临着同样的错误,并且下面的解决方案也为我工作。

$(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

数据表1.10具有不同的API。

$().DataTable 

是不同与

$().datatable 

改变您的API是这样的:

table.search(your_key).draw(); 
+0

这应该是正确的答案 – john