如果文本为空,下面的代码只能显示数组,那么该怎么可能...它应该在输入时显示列表NOT当文本为空时。
步骤进行:
删除'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 );
};
}
}
});
});
答案 0 :(得分:2)
您不想使用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
答案 1 :(得分:1)
您可以使用#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;
}
})
...
看看here。