1

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

「test」配列を使用すると正しく動作しますが、 people オブジェクトを使用しようとすると何も動作していないようで、JS エラーも発生しません。

私は何が欠けていますか?

4

2 に答える 2

2

People オブジェクトを逆方向にロードしています。オートコンプリートはlabelではなくで機能valueするため、名前ではなく ID でオートコンプリートします。

labelオートコンプリートが照合に使用するテキストになり、valueそれを選択すると返されます。

それらを逆にするだけで機能します。

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

デモ: http://jsfiddle.net/qmmms/1/

于 2012-04-04T17:01:02.600 に答える
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); 
        } 
}); 
于 2012-04-04T16:45:52.623 に答える