2015-07-08 10 views
5

Ich habe die folgende Webseite an meine Bedürfnisse angepasst und ein wenig Code hinzugefügt, so dass es jetzt Select2 Dropdown-Menüs anstelle von regulären Auswahlmenüs (die ich viel besser). Allerdings konnte ich den Code nicht anpassen, so dass ich ihn nur für bestimmte Spalten verwenden kann, anstatt für jede Spalte. Jede Anleitung würde sehr geschätzt werden.DataTables Suche in bestimmten Spalten

http://datatables.net/examples/api/multi_filter_select.html (Code I angepasst)

initComplete: function() { 
     this.api().columns().every(function() { 
      var column = this; 
      var select = $("<select class='searchs2'><option value=''></option></select>") 
       .appendTo($(column.header()).append()) 
       .on('change', function() { 
        var val = $.fn.dataTable.util.escapeRegex(
         $(this).val() 
        ); 
        column 
         .search(val ? '^'+val+'$' : '', true, false) 
         .draw(); 
       }); 
      column.data().unique().sort().each(function (d, j) 
      { select.append('<option value="'+d+'">'+d+'</option>')}); 
     }); 
     $(".searchs2").select2(); 
    } 

auch - wenn es eine Option ist die ‚allgemeine‘ Suchfeld zu verstecken Ich mag würde es auf sich verstecken, wie gut und bieten nur diese select2 Boxen. Vielen Dank.

(bearbeitet das Update zu aktualisieren, so select2 für jeden Dropdown-Box initialisieren würde, wurde zuletzt eine Initialisierung nicht) kann

Antwort

5

Sie columns([array]) verwenden. Statt

this.api().columns().every(function() { 

und Sie wollen nur die Suche auf der Säule 1,2,5 und 6 auszuführen.

this.api().columns([1,2,5,6]).every(function() { 
+0

I modifizierte 'this.api() Spalten() jede (Funktion.() {'zu' this.api(). columns ([1,2,5,6], function() {'(und einige andere Variationen) und ich kann die Syntax nicht initialisieren, das scheint definitiv die Lösung zu sein Ich werde etwas damit herum basteln müssen, um es zum Laufen zu bringen. –

+2

@JeffBSoloWookie, ich denke, was David meinte, war, dass statt dieser 'this.api(). Columns(). Jeder (function() { 'Verwenden Sie diese' this.api(). Spalten ([1,2,5,6]). every (function() {'. –

+1

ok - dein Schnitt war 'etwas zu einfach' ... kann nicht glauben, dass ich das nicht gesehen habe :((Ich hätte nicht gedacht, dass ich das Array mit 'jedem' noch an Ort und Stelle verwenden könnte) –

Verwandte Themen