Этот вопрос действительно устарел, в любом случае, я работаю с новым jQuery UI 1.8.16, автозаполнение теперь совсем другое: http://jqueryui.com/demos/autocomplete/#default
В любом случае, если вы пытаетесь сделать то же самое, что задает вопрос, больше нет функции разбора, насколько я знаю, нет функции, которая вызывается с результатами поиска.
Мне удалось это сделать, переопределив функцию фильтра автозаполнения - Примечание: это повлияет на все ваши автозаполнения
$.ui.autocomplete.filter = function(array, term) {
var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
var aryMatches = $.grep( array, function(value) {
return matcher.test(value.label || value.value || value);
});
if (aryMatches.length == 0){
aryMatches.push({
label: '<span class="info" style="font-style: italic;">no match found</span>',
value: null
});
}
return aryMatches;
};
Функция немного изменена из исходного кода, вызов grep такой же, но если результатов нет, я добавляю объект со значением null, затем я перезаписываю вызовы select, чтобы проверить наличие нулевого значения.
Это дает вам эффект, когда, если вы продолжаете печатать, и совпадений не найдено, в раскрывающемся списке вы получите элемент «совпадений не найдено», что довольно круто.
Чтобы переопределить выбранные вызовы, см. jQuery UI Отключение автозаполнения событий Select & Close
$(this).data('autocomplete').menu.options.selected = function(oEvent, ui){
if ($(ui.item).data('item.autocomplete').value != null){
//your code here - remember to call close on your autocomplete after
}
};
Так как я использую это во всех своих автозаполнениях на странице, убедитесь, что сначала вы проверили, является ли значение пустым! Прежде чем пытаться ссылаться на ключи, которых там нет.