2011-06-09 88 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