Javascript JQuery UI自动完成-无法加载对象
我试图让autocomplete使用jQueryUI,但当我尝试传入标签和值对象时遇到了问题Javascript JQuery UI自动完成-无法加载对象,javascript,jquery,arrays,object,autocomplete,Javascript,Jquery,Arrays,Object,Autocomplete,我试图让autocomplete使用jQueryUI,但当我尝试传入标签和值对象时遇到了问题 var people = []; var test = new Array(); var obj = jQuery.parseJSON(data); $.each(obj.data, function(i,person){ people[people.length] = {
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);
}
});
当我使用“test”数组时,它工作正常,但当我尝试使用people对象时,似乎什么都没有工作,也没有JS错误
有人知道我遗漏了什么吗
非常感谢试试:
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);
}
});
您正在向后加载人员对象。自动完成在
标签
上工作,而不是在值
上工作,因此您是在id而不是名称上自动完成的
标签
将是自动完成用于匹配的文本,值
是选择它时返回的内容
只需将其反转即可:
people[people.length] = {
label: person.name,
value: person.id
};
演示:当我使用测试数组并开始在框中键入时,我会得到名称列表。但是当我使用people对象时,我什么也得不到……为什么在每种情况下都使用不同的数组方法
[]
vsnew Array()
和person[person.length]
vs.push()
?我觉得代码示例中缺少一些内容。您的选择器正确吗?页面上是否有input id=“friend”
?适合我()。你确定你把所有的代码都放在这里了吗?是的,正如他说的,数组可以工作,但对象不能。这就是为什么他的对象没有像他期望的那样工作。是的,你是正确的,只有当乔纳尔在上面发布他们的答案时才被注意到。愚蠢的错误,谢谢你。原来我的标签和值是错误的,所以我要找的东西没有显示出来,但是当我搜索ID时,列表出现了。非常感谢!