2015-11-19 11 views
6

Ich versuche, eine Spaltensuche und eine normale Suche nach bestimmten Spalten zu kombinieren.Wie kann ich mehrere Spalten in DataTables durchsuchen?

Wenn Sie this example suchen, ich will die Spalten suchen können Name und Position, mit dem „normalen“ Suche und ignorieren den Rest von ihm, aber ich will noch in der Lage sein, einen Wert bei der Auswahl Unterseite der Office Spalte.

Ich habe versucht, diese zu nutzen:

columnDefs: [{ 
    targets: [2], 
    searchable: false 
}] 

Aber diese deaktiviert auch die Spalte suchen.
Ich habe auch versucht, eine benutzerdefinierte Suche auf mehreren Spalten zu schreiben:

var search = 'Software'; 
$('#example').DataTable().column(0).search(search).draw(); 
$('#example').DataTable().column(1).search(search).draw(); 

Aber dies zeigt die Zeilen nur dann, wenn beide Spalten den Suchwert enthalten, anstelle von nur 1 von ihnen. (was nicht vorkommt).

Ich probierte auch die columns().search(), aber dies ergibt das gleiche Ergebnis wie die benutzerdefinierte Suche oben.

Wie kann ich die Suche nach einzelnen Spalten aktivieren, aber die gleiche Spalte in der Gesamtsuche deaktivieren?

Antwort

10

können Sie die auf der Suche/Filter eingebaut außer Kraft setzen mit einem custom filter:

$('.dataTables_filter input').unbind().on('keyup', function() { 
    var searchTerm = this.value.toLowerCase(); 
    $.fn.dataTable.ext.search.push(function(settings, data, dataIndex) { 
     //search only in column 1 and 2 
     if (~data[0].toLowerCase().indexOf(searchTerm)) return true; 
     if (~data[1].toLowerCase().indexOf(searchTerm)) return true; 
     return false; 
    }) 
    table.draw(); 
    $.fn.dataTable.ext.search.pop(); 
}) 

Damit die „normale Suche“ gilt nur für die ersten beiden Spalten Name und Position - und Sie haben noch Auswahlboxen haben Arbeits in der Fußzeile. Gabelgeige ->https://jsfiddle.net/g9gLjtjh/

Verwandte Themen