2016-08-24 43 views
1

假設我寫在數據表格搜索框'b'中,那麼它通常會顯示'abc','ybu','break','brain'等,但我只想得到'break','brain' b)。這意味着當我寫出某個單詞時,它會向我顯示以此開始的單詞。 我正在使用yajra DataTables 1.10.10。如何更改yajra數據表搜索過濾系統?

編輯

我解決了這個概率,但現在面臨着新的概率 當我嘗試使用兩個數據表,它停下來顯示一個數據表中的tbody DATAS但另一個數據表中正常工作

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

終於解決了它

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

您可以添加答案並接受答案。這樣可以對未來的用戶有所幫助。 – abpatil

回答

0

最終的答案:

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

}); 

另一種解決方案:(沒有做多的數據表在同一頁工作)

$.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

可以使用RegEx做到這一點。
示例代碼 -

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

工作JsFiddle。但它只適用於列明智。
的示例 -

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

在這裏,我們將搜索正則表達式來僅第一列。

+0

你可以做兩個數據表? – Borna