2016-08-24 2 views
1

Angenommen, ich schreibe in das Suchfeld 'b' der Datentabelle, dann zeigt es normalerweise 'abc', 'ybu', 'break', 'brain' usw. Aber ich möchte nur 'break', 'brain' bekommen b). Das bedeutet, wenn ich etwas Wort schreibe, wird es mir ein Wort zeigen, das damit beginnt. Ich benutze yajra DataTables 1.10.10.Wie man yajra dataTable Suchfiltersystem ändert?

bearbeiten

ich dieses prob gelöst, aber jetzt neue prob mit Blick auf wenn ich versuche, zwei Datentabellen zu verwenden, es stoppen einer Datentabelle tbody Daten zeigen aber eine andere Datentabelle Arbeit richtig

$.fn.dataTableExt.afnFiltering.push(
     function(oSettings, aData, iDataIndex) { 
      var keywords = $(".dataTables_filter input").val().split(' '); 
      var matches = 0; 
      for (var k=0; k<keywords.length; k++) { 
       var keyword = keywords[k]; 
       for (var col=0; col<aData.length; col++) { 
        if (aData[col].charAt(0).toLowerCase() == keyword.charAt(0).toLowerCase()) { 
         matches++; 
         break; 
        } 
       } 
      } 
      return matches == keywords.length; 
     } 
    ); 
$('.table2id').dataTable({ 
}); 
$('.table1id').dataTable({ 
}); 

endlich gelöst

var ptable = $('#table2').DataTable(); 
var rtable = $('#table1').DataTable(); 

var term; 
$('#table1_filter input[type="search"]').keyup(function(e){ 
    console.log("table1_filter"); 
    var term = $(this).val(); 

    regex = '^' + term ; 
    rtable.column(0).search(regex, true, false).draw(); 

}); 
$('#table2_filter input[type="search"]').keyup(function(e){ 

    term = $(this).val(); 
    regex = '^' + term ; 
    ptable.column(0).search(regex, true, false).draw(); 

}); 
+0

Sie können Ihre Antwort hinzufügen und als Antwort akzeptieren. Damit kann es für zukünftige Benutzer hilfreich sein. – abpatil

Antwort

0

Endgültige Antwort:

var ptable = $('#table2').DataTable(); 
var rtable = $('#table1').DataTable(); 

var term; 
$('#table1_filter input[type="search"]').keyup(function(e){ 
    console.log("table1_filter"); 
    var term = $(this).val(); 

    regex = '^' + term ; 
    rtable.column(0).search(regex, true, false).draw(); 

}); 
$('#table2_filter input[type="search"]').keyup(function(e){ 

    term = $(this).val(); 
    regex = '^' + term ; 
    ptable.column(0).search(regex, true, false).draw(); 

}); 

Eine andere Lösung: (nicht für Multi Datentabellen in derselben Seite arbeiten)

$.fn.dataTableExt.afnFiltering.push(
     function(oSettings, aData, iDataIndex) { 
      var keywords = $(".dataTables_filter input").val().split(' '); 
      var matches = 0; 
      for (var k=0; k<keywords.length; k++) { 
       var keyword = keywords[k]; 
       for (var col=0; col<aData.length; col++) { 
        if (aData[col].charAt(0).toLowerCase() == keyword.charAt(0).toLowerCase()) { 
         matches++; 
         break; 
        } 
       } 
      } 
      return matches == keywords.length; 
     } 
    ); 
     $('.tableid').dataTable({ 

     }); 
3

Sie können es RegEx mit tun.
Probe code-

$('input[type="search"]').keyup(function(){ 
    var term = $(this).val(), 
    regex = '^' + term ; 
    table.search(regex, true, false).draw(); 
}); 

JsFiddle Arbeiten. Aber es kann nur spaltenweise anwendbar sein.
für Beispiel-

table.column(0).search(regex, true, false).draw(); 

Hier stellen wir nur Suche Regex ersten Spalte anwenden.

+0

können Sie es für zwei Datatables tun? – Borna

Verwandte Themen