我正在尝试使用自定义数据进行自动填充,例如JQUI docs illustrate
这是我的Javascript代码:
$.ajax({
type : 'POST',
url : '/loadUserCompanyByAjax',
dataType : 'json',
success: function (result) {
if (result.error == null) {
var dataArray = [];
$.each(result.companies,function(index,element){
dataArray.push({
name : element.name,
id : element._id
});
});
$( '.companyNameFromCreateMoe:empty' ).autocomplete({
minLength: 0,
source: dataArray,
focus: function( event, ui ) {
$(this ).val( ui.item.name );
return false;
},
select: function( event, ui ) {
alert(ui.item.id);
return false;
}
})
.autocomplete( "instance" )._renderItem = function( ul, item ) {
return $( "<li>" )
.append( "<a>" + item.name +"</a>" )
.appendTo( ul );
};
}
else {
alert('AN ERROR HAS OCCURED DURING GETTING COMPANIES : ' + result.error);
}
}
});
问题在于,当我开始输入一封信时,如果我输入字母“e”,则不会发生任何事情......
当我输入以下内容时,自动填充列表会消失..
如果我通过例子中给出的数组更改我的dataArray,它可以正常工作。
这里是我的dataArray的内容:
[
{
"name":"SARL salut ça va",
"id":"55bdd266b1257b401d405ead"
},
{
"name":"EURL Marco plomberie",
"id":"55bde8b3e633d33c1ecfbecc"
}
]
答案 0 :(得分:0)
源列表对象应该有键&#34;标签&#34;和&#34;价值&#34;。 阅读source属性的文档:http://api.jqueryui.com/autocomplete/
你应该改变你的循环来创建像这样的
的dataArray$.each(result.companies, function (index, element) {
dataArray.push({
label: element.name,
value: element._id
});
});
这是详细的小提琴。 http://jsfiddle.net/sqfwhxmj/1/
希望它有所帮助。