2016-07-27 23 views
0

Ich versuche, in einer DataTables-Spalte nach Werten zu suchen, die in einem Mehrfachauswahlfeld ausgewählt sind. Ich habe die im Multi-Select-Feld ausgewählten Werte in eine Variable eingelesen und mit "|" verknüpft. Ich habe dann versucht, die fnFilter für die Suche zu verwenden, und mein Code sieht wie folgt aus: Dies ist, wie ich den Tisch initiiert:FnFilter ist keine Funktion

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

wo Einstellungen sind die Datentabellen globale Einstellungen. Hier ist der jQuery-Code:

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); 
}); 

Dies gibt die folgenden Fehler in der Konsole:

Uncaught TypeError: table.fnFilter is not a function 

Ist es etwas falsch mit meinem Code? Oder gibt es einen besseren Weg, dies zu tun?

+0

Der entsandte Code sieht für mich in Ordnung. Können Sie ein funktionierendes Snippet erstellen? –

+0

Zwei Dinge zu überprüfen. Hast du wirklich "DataTable" und nicht "DataTable" aufgerufen? Wenn Sie Letzteres gemacht haben, erhalten Sie diesen Fehler. Hast du 'filter' oder' bFilter' in deinen Einstellungen auf false gesetzt? – BobRodes

+0

@BobRodes Ich habe es DataTable genannt und ich habe keine davon in meine Einstellungen aufgenommen. Gibt es eine andere Möglichkeit zu tun, was ich vorhatte? Vielen Dank! – rav

Antwort

0

Ich hatte den gleichen Fehler und die folgende Lösung hat für mich funktioniert.

$(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); 
      } 
     }); 
    }); 

glückliche Codierung :)

1

Datentabellen 1.10 verschiedenen api aufweist.

$().DataTable 

unterscheidet sich mit

$().datatable 

Änderung Ihrer api wie folgt aus:

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

Dies sollte die richtige Antwort sein – john