#javascript #jquery
#javascript #jquery ( jquery )
Вопрос:
Как возможно, чтобы приведенный ниже код отображал массив ТОЛЬКО в том случае, если текст пуст… Он должен показывать список во время ввода, А НЕ тогда, когда текст пуст.
ШАГИ:
- Сосредоточьтесь на тексте
- введите текст, например ‘abc’ (этот текст возвращает массив, выполняющий вызов ajax).
- ничего не случилось
- удалите ‘abc’, и я правильно увижу массив.
$('#titolare').keyup(function(){ var titolare = $.trim($('#titolare').val()); $.ajax({ type: "POST", url: "page.php", data: { titolare: titolare }, success: function(msg){ var obj = jQuery.parseJSON(msg); if (obj.result){ var tit = obj.titolare , tit_a = []; $.each (tit, function (a) { tit_a[a] = { titolare: tit[a].titolare, cod_fis: tit[a].cod_fis }; }); $("#titolare").autocomplete({ minLength: 0, source: tit_a, focus: function( event, ui ) { $("#titolare").val(ui.item.titolare); return false; }, select: function( event, ui ) { $("#titolare").val(ui.item.titolare); return false; } }) .data( "autocomplete" )._renderItem = function(ul, item) { return $( "<li></li>" ) .data( "item.autocomplete", item ) .append( "<a>" item.titolare "<br />(" item.cod_fis ")</a>") .appendTo( ul ); }; } } }); });
Ответ №1:
Вы не хотите использовать keyUp
функцию. Вы можете указать URL-адрес в качестве источника следующим образом,
$(document).ready(function(){
$( "#titolare" ).autocomplete({
source: "page.php", }
focus: function( event, ui ) {
$("#titolare").val(ui.item.titolare);
return false;
},
select: function( event, ui ) {
$("#titolare").val(ui.item.titolare);
return false;
}
}).data( "autocomplete" )._renderItem = function(ul, item) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" item.titolare "<br />(" item.cod_fis ")</a>")
.appendTo( ul );
};
});
И в вашем page.php вы можете вернуть JSON
соответствующий список объектов.
http://jqueryui.com/demos/autocomplete/#remote
Ответ №2:
Вы можете использовать виджет автозаполнения в #titolare
(без использования keyup
прослушивателя), установив source
атрибут для функции, которая будет выполнять как вызов ajax, так и преобразование данных, которые вам нужны (и теперь вы пытаетесь сделать это с помощью keyup
метода).
Что-то вроде:
$("#titolare").autocomplete({
minLength: 0,
source: function(request, response){
// ajax call and any data transformation here...
},
focus: function( event, ui ) {
$("#titolare").val(ui.item.titolare);
return false;
},
select: function( event, ui ) {
$("#titolare").val(ui.item.titolare);
return false;
}
})
...
Посмотрите здесь.