2013-02-10 75 views
9

我想使用Select2插件有4個相互依賴的下拉列表。我一直在努力尋找正確的方式來更新加載選項的數據。Select2從屬下拉列表

我的目標是通過ajax加載新數據,但是一旦我在客戶端中加載新數據,我無法將新數據添加到選擇列表。

我已經嘗試的代碼是在這裏:

$(#"a3").select2({ 
    placeholder: "select an item", 
    allowClear: true}).on("change", 
    function (e) { 
     var results = $.get("url?id=2", 
      function (data, textStatus, jqXHR) { 
       $(this).select2({ data: { results: data, text: "Name" } }); 
     }); 
    } 
); 

這裏有一個問題 select2 changing items dynamically 但解決的辦法有與選擇二V3.2而不是選擇二V3.3

回答

8

伊戈爾已經回來給我一個方法來做到這一點

var data=[...];  
$().select2({data: function() {return {results:data};}});  
/// later  
data=[...something else];  
// next query select2 will use 'something else' data 
+1

太棒了,我一直在尋找這個。一次又一次調用'select2({...})'(因爲Knockout)在一些瀏覽器中導致了大量的內存泄漏。只是告訴你寫的東西:如果你試圖返回數據,Select2會拋出一個錯誤。您需要返回數據位於'results'索引中的對象。所以:'return {results:data}' – treeface 2013-04-16 22:30:40

+1

您可以發佈一個完整的代碼示例嗎?我也需要依賴下拉工作與select2 – 2016-01-26 13:35:23

+0

這不適用於我,回調從來沒有被稱爲(Select2 v4) – 2016-08-04 14:29:03

4

正確的格式工作是:

.select2("data", {...}) 
+0

感謝伊戈爾,我發現使用該方法,它試圖根據我傳入的數據在下拉列表中選擇一個項目。 – 2013-02-11 02:47:55

2

對於Select2 v4.x,這裏是一個小的js class

使用此選項,select2列表框的選項將由ajax根據另一個select2列表框的選擇來加載/刷新。依賴關係可以被鏈接。

例如 -

new Select2Cascade($('#country'), $('#province'), 'path/to/geocode', {type:"province", parent_id: ''}); 
new Select2Cascade($('#province'), $('#district'), 'path/to/geocode', {type:"district", parent_id: ''}); 

檢查codepen演示。這裏還有一篇關於how to use的帖子吧。

+0

演示不起作用。 – 2017-09-18 09:41:39