JQuery UI自动完成 - 无法加载对象

时间:2012-04-04 16:06:31

标签: javascript jquery arrays object autocomplete

我正在尝试使用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错误。

有没有人对我遗失的内容有任何想法?

非常感谢

2 个答案:

答案 0 :(得分:2)

您正在向后加载您的人物对象。自动填充适用于label,而不是value,因此您可以自动填充您的ID而不是名称。

label将是自动填充用于匹配的文本,value是您选择时返回的内容。

简单地反转它们,它会起作用:

 people[people.length] = {
     label: person.name,
     value: person.id
 };

演示:http://jsfiddle.net/qmmms/1/

答案 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); 
        } 
});