2016-07-27 290 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