4

私はtwitterブートストラップ2.0.4を使用しています。ajaxを使用してドロップダウンにデータを入力したい。typeaheadプラグインのsourceプロパティでは、sourceの値が配列または関数である必要があります。ajaxリクエストの後で配列の値を変更しようとしましたが、最初のリクエストの結果しか表示されません。

<form class="navbar-search">
   <input type="text" id="searchSong" class="typeahead" placeholder="Search">
</form>

 $('.typeahead').keyup(function(){                     
                var list;
                var q = $('.typeahead').val();
                if(!q){
                    return;
                }
                $.ajax({
                    type: "GET",
                    url: "/WebApplication1/Playlist/search?query="+q,
                    success: function(data){
                        list = data.split(',');
                        alert(list);
                        $('.typeahead').typeahead({
                            source: list
                        })
                    }
                });

警告ボックスには、ajaxからロードされたデータが正しいことが示されますが、ドロップダウンには以前の値が表示されます

4

4 に答える 4

3

プラグインがすでに使用されている場合、プラグインを再初期化することはできません。

すでに作業中の先行入力を更新してみてください:ライブデモ(jsfiddle)

var typeahead = $('.typeahead').data('typeahead');
if(typeahead) typeahead.source = list;
else $('.typeahead').typeahead({source: list});

責任のあるプラグインコード(github)

于 2012-10-11T18:52:08.203 に答える
1

そのバージョンは、すぐに使用できる ajax を使用した先行入力の入力をサポートしているとは思いません。ただし、それをサポートするプラグインのバージョンがあります。

これが 1 つです。それが私が使用しているものと同じかどうかは覚えていませんが、同じ場合は非常にうまく機能します。私は確かに見つけて、この答えを更新します。

アップデート:

ここにあなたが見るべき質問があります。選択した回答で指定されたこの拡張機能は、私が使用する拡張機能です。

于 2012-10-11T14:47:10.433 に答える
-3

これを食べて

  $.get('/my_url/' + some_params, function(data){
    $("#address-field").typeahead().data().typeahead.source = data
  },'json');
于 2014-06-06T08:21:36.267 に答える