web-dev-qa-db-ja.com

initが機能しなくなった後、select2にJSONを入力します

Select2要素にJSON配列を入力しようとしています。しかし、私はそれを得ることができません。

次の配列があります:

data = [{"id":"Foo","text":"Foo"},{"id":"Bar","text":"Bar"}]

そして、次のようにselect2を初期化します。

$("#selectElement").select2();

次のコードを使用してデータを入力します。

$('#selectElement').select2('data', data, true);

しかし、動作せず、理由はわかりません。誰かが私を助けることができますか?

編集:select2の初期化後に入力する必要があります(AJAXからJSONを受け取ります)

私の意図は、質問のselect2に他のselect2のAJAX検索のJSONを入力することです。

移入を除いてすべてうまく機能します(最初のformatSelectiomメソッドでこのJSONをうまく取得しますが、2番目のselect2にこれを移入するためにできることはわかりません)

13
james fray

あなたのコードと select2 のコードにはいくつかの違いがあります

あなたのデータ:

var data = [{"id":"Foo","text":"Foo"},{"id":"Bar","text":"Bar"}];

する必要があります:

var data = [{id:"Foo", text:"Foo"},{id:"Bar", text:"Bar"}]

あなたの人口コード:

$('#selectElement').select2('data', data, true);

する必要があります:

$('#selectElement').select2({data: data});

Select2の例

var data = [
      { id: 0, text: 'enhancement' }, 
      { id: 1, text: 'bug' }, 
      { id: 2, text: 'duplicate' }, 
      { id: 3, text: 'invalid' }, 
      { id: 4, text: 'wontfix' }
];

$(".js-example-data-array").select2({
  data: data
});

<select class="js-example-data-array"></select>
11
Mivaweb
    $('#selectElement').select2({
                minimumInputLength: 1,
                ajax: {
                    url: '@Url.Action("Search", "Home")',
                    dataType: 'json',
                    data: function(params) {
                return {
                    ad: params.term
                };
            },
            processResults: function(data) {
                return {
                    results: $.map(data, function(obj) {
                        return { id: obj.Id, text: obj.Ad + " " + obj.Soyad };
                    })
                };
            }
            });
0
user2814672

Select2リストに同様の質問を投稿してから、壁に頭をぶつけて戻ってきました。これが私が思いついたものです:(「破壊」が助けになったヒントでした)。最初に選択を空にしてからリセットします。

    $("#id_category").on('change', function(){
           var cat = $(this).val();
           var url = '/breeds/lookup/?q='+cat;
           $.get(url, function(d){
               var idb = $("#id_breed").empty();
               idb.select2({data: d});
           }, "json");

        });
0
Lee Hinde

デフォルトでプリロードされたJSONを使用してドロップダウンを表示しようとしている場合、フィールドをクリックした瞬間に、1文字も入力せずに、データが入力されたドロップダウンが表示されることを期待します。

minimumInputLength:

チャームのように機能します。それが私のものだったので、それがあなたの問題を解決したことを願っています:)

0
StefaDesign