2014-07-01 83 views
0

我有一個姓列的搜索。數據表列()搜索() - 由開始的字母搜索字符串

在「搜索姓」文本框的表尾,我希望能夠搜索到,從而I型「S」 ......「我」 ......「M」「P」的結果仍出現「辛普森」,但不是如果我輸入「兒子」,例如。

此刻,如果我輸入「兒子」,還出現了「辛普森」結果中的文本包含的字符串中。

如何配置它搜索的字符串作爲I型的開始?

這是到目前爲止我的代碼:

$(document).ready(function() { 

    $('.thSurname').each(function() { 
     $(this).html('<input type="text" placeholder="Search Surname" />'); 
    }); 

    var table = $('#ContactTable').DataTable({ 
     "aoColumns": [ 
      { "bVisible": false }, 
      { "sClass": "center" }, 
      { "sClass": "center" }, 
      { "sClass": "center" }, 
      { "sClass": "center" } 
     ] 
    }); 

    table.columns().eq(0).each(function (colIdx) { 
     $('input', table.column(colIdx).footer()).on('keyup change', function() { 
      table 
       .column(colIdx) 
       .search(this.value) 
       .draw(); 
     }); 
    }); 
    }); 

回答

1

我認爲這應該工作。

.search(new RegExp("^"+this.value,"i")). 

胡蘿蔔符號意味着只匹配搜索字符串開頭處的表達式。 i修飾符表示它不區分大小寫。

快速JSfiddle顯示它爲我工作。

+0

我剛試過,沒有快樂。控制檯錯誤頁面顯示「我沒有定義」 – user1612185

+0

@ user1612185 oops,'i'應該是一個字符串,我修改了我的答案。 – JTG

+0

重要提示:上述選項正常工作,但前提是您要按每列進行搜索。 。 所以 '$( '#的ElementName')的dataTable()搜索( '^' +字符串searchstr,真,假).draw();' 將無法​​找到結果,但。 ... '$( '#的ElementName')的dataTable()列(1).search( '^' +字符串searchstr,真,假).draw();' 會發現列的開頭,即使多個字符串。 – Twelve24

0

的解決方案,在這裏似乎沒有工作對我來說也許是過時的代碼。我結束了使用fnFilter功能。例如:

$('.datatable').dataTable().fnFilter("^" + text, 0, true); 

或文本開頭的數字:

$('.datatable').dataTable().fnFilter("^[0-9]", 0, true); 

,然後清除過濾

$('.datatable').dataTable().fnFilter("", 0);