2015-10-09 151 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