2016-10-21 2 views
0

Ich habe ein Datatable mit 3 Spalten und einem Suchfeld.Kombinieren Sie Suchkriterien aus verschiedenen Spalte

sollte Jedes Stichwort in das Suchfeld entsprechen der entweder Spalte beginnend 1, 2 oder 3.


Beispiel:

Keyword "Apfel", diese drei Reihen werden Spiel:

"Apple- pie" - "Dessert" - "handmade"

"New Birnennachtisch" - "Dessert" - "Apfel tree"

"New Apfelnachtisch" - "Apfel Dessert" - "handmade"

Diese Zeile sollte nicht überein:

"Old Apfelnachtisch" - "Dessert" - "handgemachte Apfelprodukt"


Code:

Für genaue Übereinstimmung zu Beginn jeder 3 Säule:

searchBox.on('keyup', $.proxy(function (e) { 
    // how to merge the search result? 
    this._table.column(0).search('^' + searchBox.val(), true, 
false).draw(); 
    this._table.column(1).search('^' + searchBox.val(), true, 
false).draw(); 
    this._table.column(2).search('^' + searchBox.val(), true, 
false).draw(); 
}, this)); 

Antwort

0

fand ich eine Lösung.

Nach der Datentabelle, müssen wir einen benutzerdefinierten Filter OR-Bedingung auf mehrere Spalten zu erreichen: https://datatables.net/forums/discussion/11728/filtering-datatable-columns-using-or-logic

$.fn.dataTable.ext.search.push(function (settings, data, dataIndex) { 
     var keyword = searchBox.val(); 
     keyword = keyword.toUpperCase(); 
     var productDesc = data[1].toUpperCase(); 
     var productExch = data[3].toUpperCase(); 
     var productSymbol = data[5].toUpperCase(); 
     if (productDesc.startsWith(keyword) || productExch.startsWith(keyword) || productSymbol.startsWith(keyword)) { 
     return true; 
     } 
     return false; 
    }); 

    searchBox.on('keyup', $.proxy(function (e) { 
     this._table.draw(); //  this._table.search(searchBox.val()).draw(); 
    }, this)); 
Verwandte Themen