Я использую функцию автозаполнения в jQuery UI 1.8.6. И я хочу выделить соответствующие результаты. Но по какой-то причине, когда я использую регулярное выражение для добавления "сильных" тегов вокруг совпадающих символов, строка сбрасывается. Поэтому я вижу [strong]matching chars[/strong]
вместо помеченного текста.
Это javascript, который я использую в настоящее время:
$(function () {
$("#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" /]
Результат выглядит следующим образом:
[{ "Описание": "Ничего значимого", "ИД": 3, "Имя": "Джо публично" }]