2016-12-07 118 views
2

Here是搜索工作正常的小提琴,但它不會突出顯示名稱列中文本的第一個字母,並突出顯示剩餘的匹配字母......問題是什麼。 ....任何人都可以修復它....... 例如,如果我們在搜索欄中輸入「v」,它將顯示所有的v,但名稱列中的「v」不會突出顯示.....除了文本的名稱列的第一個字母每個匹配的元素是突出不突出顯示連續單詞中的第一個字母

我們在這個代碼改變......

$("#search").keyup(function(){ 
 
     _this = $(this); 
 
     var searched_term = $(_this).val().toLowerCase(); 
 
\t \t if(_this.val() == ""){ 
 
\t \t \t $.each($("#ftz-table tbody tr td:nth-child(n+2)"), function() { 
 
\t \t \t $(this).text($(this).text()); \t 
 
\t \t }) 
 
\t \t return; 
 
\t \t } 
 
     $.each($("#ftz-table tbody tr td:nth-child(n+2)"), function() { 
 
\t \t \t var original_text = $(this).text();  
 
\t \t \t if(!($(this).text().toLowerCase().indexOf(searched_term) == -1)){ 
 
\t \t \t \t $(this).html(original_text.replace(searched_term, "<mark>"+searched_term+"</mark>")); 
 
\t \t \t } \t 
 
\t \t \t else{ 
 
\t \t \t \t $(this).text($(this).text()); \t 
 
\t \t \t } 
 
     }); 
 
    });

+0

不明白您的問題。請改述 – ScanQR

+0

刪除以前的問題併發布重複 – Satpal

回答

0

你的搜索不區分大小寫,但original_text.replace()沒有,所以indexOf發現vVreplace將只替換搜索輸入情況相匹配的。

要保留的情況下,你需要捕獲:

var re = new RegExp("(" + searched_term + ")", "i"); 
$.each($("#ftz-table tbody tr td:nth-child(n+2)"), function() { 
    $(this).html($(this).text().replace(re, "<mark>$1</mark>")); 
}); 

https://jsfiddle.net/xr0hns13/1/

searched_term應該逃過任何正則表達式保留字符)

+0

在標記標籤之間使用1美元? @Alex K. – Sravani

+0

將$ 1轉換爲正則表達式捕獲的值 - 括號內的內容 - 正確的情況。見http://stackoverflow.com/questions/16702924/how-to-explain-1-2-in-javascript-when-using-regular-expression –

相關問題