2011-06-09 92 views
4

我正在繼續使用Jquery UI的搜索術語建議工具。我現在正在努力以粗體顯示檢索詞模式的結果。我已通過修補Autocomplete的_renderItem方法來實現此功能。我現在的問題是被替換的字符與用戶在輸入中輸入的字符的大小寫相同(例如,如果用戶鍵入「A」並且返回的結果是「America」,則被替換的文本將是A 。聚體一個下面的代碼:使用JavaScript替換方法保留大小寫/大寫

var exp = new RegExp(this.term, "gi") ; 
    var rep = item.label.replace(exp, "<span style='font-weight:bold;color:Black;'>" 
    + this.term + "</span>"); 

和往常一樣,在此先感謝您的幫助

+0

一段有用的代碼可能是[jQuery Highlight Plugin](http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html)。即使你沒有使用jQuery,你可以檢查代碼,它很簡潔。 – Kobi 2011-06-09 17:21:48

回答

6

您可以使用:

var rep = item.label.replace(exp, 
          "<span style='font-weight:bold;color:Black;'>$&</span>"); 

當更換一個字符串,$&表示「整個匹配」,所以你不必重複搜索詞(在某些情況下,你不知道它)。在其他口味中,您可以使用$0\0
另外,請記住escape special charactersthis.term

2

您可以在括號

var exp = new RegExp("(" + this.term + ")", "gi") ; 
var rep = item.label.replace(exp, "<span style='font-weight:bold'>$1</span>"); 

將它們封裝在組中添加您表達您可以參考,使用$ 1中組。

請參閱here for more details about backreferences