У меня много проблем с работой автозаполнения. Сначала у меня возникла несовместимость проверки, потому что я использовал проверку jQuery и jQuery 1.5 и нарушал функции AJAX в виджете автозаполнения. Это было решено, теперь мой PHP-контроллер возвращает мне результаты JSON с меткой/значением. Конечно, label — это имя, которое я хочу показать, а значение — это значение, которое мне нужно отправить.
Я использую пример вывода JSON с PHP, только для тестирования, а не для поиска прямо сейчас. Это то, что я отправляю обратно, когда делаю запрос AJAX:
[{"label":"Client example","value":1},{"label":"Lorem Ipsum","value":2},{"label":"Microsoft","value":3}]
И, используя следующий код, я предположил, что он покажет мне непосредственно метку и отправит идентификатор. Когда я начинаю печатать, я вижу нужные результаты в списке Client example, Lorem Ipsum и Microsoft, но когда я выбираю один из них, список закрывается, и ввод показывает значение, а не метку.
$("#clientid").autocomplete({
source: function(request, response) {
$("#ajax-loader").fadeIn('normal');
$.ajax({
url: BASE_URL + 'projects/ajax/get_clients',
data: request,
dataType: "json",
type: "POST",
success: function(data) {
response(data);
}
});
$("#ajax-loader").fadeOut("normal");
},
minLength: 2
});
Я также попробовал код, который @3nigma предложил мне, когда я искал, почему не работает автозаполнение:
success: function(data) {
response($.map( data, function( item ) {
return {
label: item.label,
value: item.value
}
}));
}
И ничего. Глядя на примеры веб-сайта пользовательского интерфейса jQuery и Google, кажется, что select должен делать это, поэтому я попытался:
select: function(event, ui) {
$("#clientid").val(ui.item.label);
}
Но тоже не работает. Я вижу значение <input />
.
Я не знаю, что еще я могу попробовать. Как я могу решить эту проблему?
Заранее спасибо!