У меня много проблем с работой автозаполнения. Во-первых, у меня несовместимость проверки, потому что я использовал jQuery Validation и jQuery 1.5 и нарушал функции AJAX в виджете автозаполнения. Это было решено, теперь мой PHP-контроллер возвращает мне JSON результатов с меткой / значением. Конечно, метка - это имя, которое я хочу показать, а значение - это значение, которое мне нужно отправить.
Я использую пример вывода JSON с PHP, только для тестирования, а не для поиска прямо сейчас. Вот что я отправляю обратно, когда делаю запрос AJAX:
[{"label":"Client example","value":1},{"label":"Lorem Ipsum","value":2},{"label":"Microsoft","value":3}]
И используя следующий код, я предположил, что он покажет мне метку и отправит идентификатор. Когда я начинаю печатать, я вижу результаты, которые я хочу, в списке клиентов, например, 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 UI и Google, кажется, что select должен сделать это, поэтому я попробовал:
select: function(event, ui) {
$("#clientid").val(ui.item.label);
}
Но тоже не работает. Я вижу значение на <input />
.
Я не знаю, что еще я могу попробовать. Как я могу решить эту проблему?
Заранее спасибо!