2012-04-04 11 views
1

私はJQuery UIで作業するオートコンプリート作業をしようとしていますが、ラベル&値オブジェクトを試して渡すときに問題があります。 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); 
       } 
     }); 

私はそれが正常に動作している「試験」のアレイを使用しますが、私は試してみて、使用するとき、人々は何もどちらか、ノーJSのエラーが動作しているようだしないオブジェクト

誰も私が逃したものについてのアイデアはありますか?

多くのおかげ

+0

"動作しませんか"? –

+0

テストアレイを使用するときと同じように、ボックスに入力を開始すると名前のリストが表示されます。しかし、私が人々のオブジェクトを使用するとき、私は何も得られません.... –

+0

なぜそれぞれの場合に異なる配列メソッドを使用していますか? '[]' vs 'new Array()'と 'person [person.length]'と '.push()'の違いは? –

答えて

2

あなたはあなたの人々が後方にオブジェクトをロードしています。オートコンプリートはvalueではなくlabelで機能するため、名前の代わりに自分のIDにオートコンプリートしています。

labelは、オートコンプリートで一致するテキストになります。valueは、選択したときに返されるものです。

は、単にそれらを逆にし、それが動作します:

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

デモ:http://jsfiddle.net/qmmms/1/意味は何

+0

オートコンプリートは、文字列の配列に対しても機能します。これは 'test'でなければなりません。 –

+0

はい、彼が言ったように、配列は動作しますがオブジェクトはありません。これは彼のオブジェクトが期待どおりに動作しない理由です。 –

+0

はい、あなたは正しいです、ちょうどjornareが上記の答えを掲示したときに気づいただけです。愚かな間違い。 –

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

ありがとうございます。私はラベルと値が間違った方法で回っていたことが分かります。だから私が探していたものは表示されませんでしたが、代わりにIDを検索したときにリストがポップアップしました。どうもありがとう! –

関連する問題