我正在尝试使用JQuery UI进行自动完成工作,但是当我尝试传递标签时,我遇到了麻烦。价值对象。
var people = [];
var test = new Array();
var obj = jQuery.parseJSON(data);
$.each(obj.data, function(i,person){
people[people.length] = {
label: person.id,
value: person.name
};
test.push(person.name);
});
$("#friend").autocomplete({
source: test,
select: function(event, ui) {
alert(ui.item.id);
}
});
当我使用'测试'数组它工作正常,但是当我尝试使用people对象时似乎没有任何工作,也没有JS错误。
有没有人对我遗失的内容有任何想法?
非常感谢
答案 0 :(得分:2)
您正在向后加载您的人物对象。自动填充适用于label
,而不是value
,因此您可以自动填充您的ID而不是名称。
label
将是自动填充用于匹配的文本,value
是您选择时返回的内容。
简单地反转它们,它会起作用:
people[people.length] = {
label: person.name,
value: person.id
};
答案 1 :(得分:1)
尝试:
people.push({value:person.id,label:person.name});
像这样:
var people = [];
var obj = {data:[{id:1,name:"Adam"},{id:2,name:"Eve"}]};
$.each(obj.data, function(i,person){
people.push( {
label: person.name,
value: person.id
});
});
$("#friend").autocomplete({
source: people,
select: function(event, ui) {
alert(ui.item.name);
}
});