Я пытаюсь получить аналог автозаполнения:
Здесь в пользовательском примере jquery.
Вместо этого вместо жестко закодированных данных будет использоваться вызов ajax. У меня есть два столбца, которые я хочу показать (значение и описание). Когда пользователь вводит его, .val () передается на страницу ajax и предоставляет предложения. Один первый столбец будет использоваться для значения.
Мне удалось получить один возвращенный столбец, используя простой пример с одним столбцом, но не несколько значений. Я думаю, что это что-то простое, поскольку это повторный пример кода. Ваша помощь приветствуется.
<script>
$(document).ready(function() {
$('#myinputbox').autocomplete({
minLength: 4,
source: function(request, response){
var ajaxparam = $('#myinputbox').val();
ajaxparam = escape(ajaxparam);
var querystring = "?term=" + ajaxparam;
$.ajax({
url: 'ajax/jsonencode.php'+querystring,
beforeSend: function(){
alert("beforeSend");
},
async: true,
dataType: "json"
});
},
focus: function ( event,ui ){
$( "#myinputbox" ).val( ui.item.value );
return false;
},
select: function( event, ui ) {
$( "#myinputbox" ).val( ui.item.value );
return false;
}
})
.data( "autocomplete" )._renderItem = function( ul, item ) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + item.value + "<br>" + item.desc + "</a>" )
.appendTo( ul );
};
});
</script>
beforeSend хорошо. Если я добавлю:
success: function(data){
alert(data);
}
... после dataType он правильно предупреждает меня [объект объекта].
JSON выглядит так:
[
{
"value": "value1",
"desc": "Description 1"
},
{
"value": "value2",
"desc": "Description 2"
}
]
Возвращенный json проходит проверку в jsonlint.
_renderItem, похоже, не работает.
Буду признателен за любые указатели или решение.