2014-07-01 62 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);