Sim, você pode, se fizer o patch automático do macaco.
No widget de preenchimento automático incluído na v1.8rc3 da interface do usuário do jQuery, o pop-up de sugestões é criado na função _renderMenu do widget de preenchimento automático. Esta função é definida assim:
_renderMenu: function( ul, items ) {
var self = this;
$.each( items, function( index, item ) {
self._renderItem( ul, item );
});
},
A função _renderItem é definida assim:
_renderItem: function( ul, item) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + item.label + "</a>" )
.appendTo( ul );
},
Portanto, o que você precisa fazer é substituir o _renderItem fn pela sua própria criação que produz o efeito desejado. Essa técnica, redefinindo uma função interna de uma biblioteca, aprendi a chamar -se patch de macaco . Aqui está como eu fiz isso:
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 );
};
}
Chame essa função uma vez $(document).ready(...)
.
Agora, isso é um hack, porque:
há um objeto regexp criado para cada item renderizado na lista. Esse objeto regexp deve ser reutilizado para todos os itens.
não há classe css usada para a formatação da peça concluída. É um estilo embutido.
Isso significa que, se você tivesse vários preenchimentos automáticos na mesma página, todos receberiam o mesmo tratamento. Um estilo css resolveria isso.
... mas ilustra a técnica principal e funciona para seus requisitos básicos.
exemplo de trabalho atualizado: http://output.jsbin.com/qixaxinuhe
Para preservar o caso das cadeias de correspondência, em vez de usar o caso dos caracteres digitados, use esta linha:
var t = item.label.replace(re,"<span style='font-weight:bold;color:Blue;'>" +
"$&" +
"</span>");
Em outras palavras, a partir do código original acima, basta substituir this.term
por "$&"
.
EDITAR
O texto acima altera todos os widgets de preenchimento automático na página. Se você deseja alterar apenas uma, consulte esta pergunta:
Como corrigir * apenas uma * instância do preenchimento automático em uma página?