2013-04-15 88 views
7

我使用select2代替搜索框。在select2多選中加載值

這裏我使用的加載這樣

$("#countries").select2({ 
    multiple: true, 
    tags:["India", "Japan", "Australia","Singapore"], 
    tokenSeparators: [","] 
}); 

當我按下保存按鈕,它們被正確地提交到服務器,現在這裏的問題是,當 我想修改該國領域的國家價值觀保存到服務器後,我如何將保存的值加載到國家字段。

這是我從服務器獲取數據

$.getJSON('/dataprovider?data=fetchCountriesForm', function(opts) { 

    //the opts here contains the json values of the countries. 

    //what code should be written here to load the values in $('#countries).select2(); 

    //user can add some more countries or can remove the previously added countries. 

} 

回答

4

我只需使用這個http://ivaynberg.github.io/select2/#event_ext_change鏈接並使用觸發器功能加載值

$.getJSON('/dataprovider?data=fetchCountriesForm', function(opts) { 
     parent.parent.parent.showLoader(); 
     if (opts) { 
      $("#countries").val(opts).trigger("change"); 
     } 

這個技巧在選擇框中加載值。

+2

我知道這是古老的,所以原諒我,但這似乎不適用於2維數組?我可以加載諸如('dog','cat','mouse')但不是('1':'Dog','2':'Cat','3':'Mouse')的值。你能做到嗎? – SBB

8

請看看一個documentationLoading Remote Data

你會發現和例子,如:

$("#e6").select2({ 
    placeholder: "Search for a movie", 
    minimumInputLength: 1, 
    ajax: { 
      // instead of writing the function to execute the request we use Select2's convenient helper 
      url: "http://api.rottentomatoes.com/api/public/v1.0/movies.json" 
      // Other stuffs 
      } 
}); 

你也可以這樣做:

$.getJSON('/dataprovider?data=fetchCountriesForm', function(opts){ 
    $("#countries").select2({ 
     data: opts 
    }); 
}) 

JSON數據格式必須是象下面這樣:

[{id:0,text:'enhancement'}, 
{id:1,text:'bug'}, 
{id:2,text:'duplicate'}, 
{id:3,text:'invalid'}, 
{id:4,text:'wontfix'} 
] 
+2

我相信從url檢索到的數據會加載到用戶事件的搜索框中。與用戶類型輸入一樣,值將被檢索並選擇該值。我想在這裏是加載所有從json中檢索到的值,而無需任何用戶事件。 @Kishor Subedi – rkj

+0

@rohit請檢查編輯。 –

+1

感謝@Kishor的幫助,但我發現更簡單的方法來做到這一點,我只是使用觸發函數來加載值。 – rkj