【发布时间】:2010-11-05 15:08:59
【问题描述】:
我在 jQuery UI 1.8.6 中使用自动完成功能。我想突出匹配结果。但由于某种原因,当我使用正则表达式在匹配字符周围添加“强”标签时,字符串被转义。所以我看到[strong]matching chars[/strong],而不是标记文本。
这是我目前正在使用的 javascript:
$("#autocompleteinputfield").autocomplete({
source: function (request, response) {
$.ajax({
url: "someservice",
type: "GET",
dataType: "json",
data: { filter: request.term, maxResults: 10 },
success: function (data) {
response($.map(data, function (item) {
// return { label: item.ID + ' - ' + item.Name, id: item.ID, value: item.Name }
var regex = new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + request.term.replace(/ ([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/ gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi");
return {
label: (item.ID + ' - ' + item.Name).replace(regex, "<strong>$1</strong>"),
id: item.ID,
value: item.Name
}
}))
}
});
},
select: function (event, ui) {
alert(ui.item ? ("You picked '" + ui.item.label + "' with an ID of " + ui.item.id)
: "Nothing selected, input was " + this.value);
}
});
更新:
“输入”是在文本框中输入的文本(在本例中为:[input type="text" id="autocompleteinputfield" /]
输出如下所示:
[{"Description":"Nothing meaningful","ID":3,"Name":"Joe Public"}]
【问题讨论】:
-
响应中进来ajax数据的时候是什么样子的?