2015-10-09 113 views
1

我在我的网页中使用了jquery数据表。我还使用了网格的自定义过滤器。以下是自定义过滤器的代码。Jquery DataTable筛选器

代码

var oTable = $('#myDataTable').dataTable(); 

jQuery('#myDataTable_filter').find("input").keyup(function() { 
    var Input = $(this).val(); 
    oTable.fnFilter('^' + Input, null, true, null); 
    $('#myDataTable_filter').find("input").val(Input); 
}); 

上面的代码工作正常,所有的案件,但不用于搜索(A * STAR)。它没有选择正确的搜索结果。任何人都可以帮我理清这个问题。

+0

你可以尝试oTable.fnFilter( '^' + Input.replace( '*', '\ *' ),null,true,null); –

回答

0

您的解决方案不工作的A*STAR,因为当你在这里对其进行筛选:

oTable.fnFilter('^' + Input, null, true, null); 

正则表达式是产生^A*STAR但同时*是元字符正确的正则表达式应该由\逃脱这样的正则表达式应该是^A\*STAR

你可以看到REGEX MetaCharacter


更新的代码添加^元字符

var Input = $(this).val().replace(/([&\/\\#,\^+()$~%.'":*?<>{}])/g,"\\$1");//this is will add prefix \ to meta character 
oTable.fnFilter('^' + Input, null, true, null); 
+0

如何搜索单词“A^STAR”?由于上述正则表达式在搜索“A^Start”时不起作用。 – DonMax

+0

你想要匹配什么? – Manwal

+0

在我的网格中,价值'新加坡的星级酒店'在那里。如果我用关键词“A^Star”进行搜索,则正则表达式应该产生上述值。但它不会返回任何价值。 – DonMax