Я пытаюсь реализовать блок автозаполнения jQuery и успешно интегрирован в свой проект. Здесь я даю источник для окна автозаполнения jquery в качестве элементов списка.Выделить запрос в jQuery Autocomplete для динамического источника списка
var _array = ['<li height="45px" class="ui-menu-item ui_dropdown_item" role="presentation"><a id="ui-id-302" class="ui-corner-all ui_dropdown_focus" tabindex="-1"><img class="apps-share-chips-profile-icon" src="build/assets/apple.png" onerror="helper.onImageError(this);"><span search="text">[email protected]</span></a></li>',
'<li height="45px" class="ui-menu-item ui_dropdown_item" role="presentation"><a id="ui-id-302" class="ui-corner-all ui_dropdown_focus" tabindex="-1"><img class="apps-share-chips-profile-icon" src="build/assets/ms.png" onerror="helper.onImageError(this);"><span search="text">[email protected]cue.org</span></a></li>'];
Как вы видите, я даю элементы li как источник и привязываю его в jQuery, как показано ниже.
$(this).data('ui-autocomplete')._renderItem = function(ul, item) {
return $(item.label).appendTo(ul);
};
Таким образом, я получаю функциональность законченной. Теперь то, что я пытаюсь сделать, - это выделить запрос, который вводит пользователь, как указано в этом SO link.
Моя попытка из приведена ниже, я пытаюсь заменить текст тега span на запрос, который вводит пользователь. Как я мог добиться этого в своем сценарии.
$(this).data('ui-autocomplete')._renderItem = function(ul, item) {
$(item.label).find('span').replace(new RegExp('(?![^&;]+;)(?!<[^<>]*)(' + $.ui.autocomplete.escapeRegex(this.term) + ')(?![^<>]*>)(?![^&;]+;)', 'gi'), '<span style="font-weight:bold;color:Blue;">$1</span>');
return $(item.label).appendTo(ul);
};
Но я не мог достичь, и я не знаю, что в этом решении не так. Ответы высоко оценены.
EDIT: Я добавил jsfiddle link. Просто хочу добавить в него функцию подсветки запросов.
Вы имеете в виду что-то вроде [this] (https://jsfiddle.net/julmot/bs69vcqL/) - используя [mark.js] (https://markjs.io/)? – dude