Так, ви можете, якщо ви заповнили автозаповнення.
У віджеті автозаповнення, включеному в v1.8rc3 інтерфейсу jQuery, спливаючі пропозиції створюються у функції _renderMenu віджета автозаповнення. Ця функція визначена так:
_renderMenu: function( ul, items ) {
var self = this;
$.each( items, function( index, item ) {
self._renderItem( ul, item );
});
},
Функція _renderItem визначається так:
_renderItem: function( ul, item) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + item.label + "</a>" )
.appendTo( ul );
},
Отже, що вам потрібно зробити, це замінити цей _renderItem fn власним творінням, яке створює бажаний ефект. Ця методика, переосмислюючи внутрішню функцію в бібліотеці, я прийшла вивчати називається мавпочкою . Ось як я це зробив:
function monkeyPatchAutocomplete() {
// don't really need this, but in case I did, I could store it and chain
var oldFn = $.ui.autocomplete.prototype._renderItem;
$.ui.autocomplete.prototype._renderItem = function( ul, item) {
var re = new RegExp("^" + this.term) ;
var t = item.label.replace(re,"<span style='font-weight:bold;color:Blue;'>" +
this.term +
"</span>");
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + t + "</a>" )
.appendTo( ul );
};
}
Зателефонуйте до цієї функції один раз $(document).ready(...)
.
Тепер це хак, тому що:
для кожного елемента, відображеного у списку, створено obge regexp. Цей regexp obj повинен бути використаний для всіх елементів.
не існує класу css, який використовується для форматування завершеної частини. Це стиль inline.
Це означає, що якщо у вас було кілька автозаповнення на одній сторінці, всі вони отримали б одне і те ж лікування. Стиль css вирішив би це.
... але вона ілюструє основну техніку, і вона працює для ваших основних вимог.
оновлений приклад роботи: http://output.jsbin.com/qixaxinuhe
Щоб зберегти випадок рядків збігу, на відміну від використання регістру введених символів, використовуйте цей рядок:
var t = item.label.replace(re,"<span style='font-weight:bold;color:Blue;'>" +
"$&" +
"</span>");
Іншими словами, починаючи з вихідного коду вище, вам просто потрібно замінити this.term
з "$&"
.
РЕДАКТУВАННЯ
Наведене вище змінює кожен віджет автозаповнення на сторінці. Якщо ви хочете змінити лише одне, див. Це питання:
Як виправити * лише один * екземпляр автозаповнення на сторінці?