我有一组机场名称以及将在自动完成中显示的代码。
例如。阿姆斯特丹(AMS)
我想匹配在搜索框中输入的值,我想显示匹配的机场名称以及机场代码,如下所示。
如果我在搜索框中输入ams,我想在我的自动填充功能中突出显示“ Ams”字样(“ AMS”)。
我写了如下代码:
function () {
var oldFn = $.ui.autocomplete.prototype._renderItem;
$.ui.autocomplete.prototype._renderItem = function( ul, item) {
var re = new RegExp("^" + this.term, "i") ;
var t = item.label.replace(re,"<span style='font-weight:bold;'>" + this.term + "</span>");
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + t + "</a>" )
.appendTo( ul );
};
};
结果为“ Ams”终端(AMS),而不是“ Ams”终端。
注意:Amsterdem(AMS)是一个术语
请指教。
最佳答案
你必须改变
var re = new RegExp("^" + this.term, "i") ;
用这个代码
var re = new RegExp(this.term, "ig") ;
这将替换您字符串中的所有实例
“ ^”表示字符串的开头,而正则表达式中的“ g”适用于所有实例
here是有效的示例
用此代码替换您的代码
function () {
var oldFn = $.ui.autocomplete.prototype._renderItem;
$.ui.autocomplete.prototype._renderItem = function( ul, item) {
var re = new RegExp(this.term, "ig") ;
var t = item.label.replace(re,"<span style='font-weight:bold;'>" + this.term + "</span>");
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + t + "</a>" )
.appendTo( ul );
};
};