2013-08-20 80 views
23

用下面的HTML:動態添加選項和optgroups在選擇二

<input type='hidden' id='cantseeme'> 

我有沒有問題動態創建一個選擇二控制,並加入我的選擇:

// simplified example 
var select2_ary = []; 

select2_ary.push({ 
    id : "one", 
    text : "one" 
}); 
select2_ary.push({ 
    id : "two", 
    text : "two" 
}); 

$("#cantseeme").select2({ 
    placeholder : "Pick a number", 
    data : select2_ary 
}); 

不過,我可以似乎不知道如何添加optgroups這種方式。我在github上發現了this討論,並在博客上發現了this文章,但前者似乎沒有討論動態optgroup的補充,我根本無法對後者有任何意義。

任何人有任何想法?

回答

34

我發現埋的你鏈接到GitHub的討論裏面的答案,因爲optgroups對象結構如下:

{ 
    id  : 1, 
    text : 'optgroup', 
    children: [{ 
       id : 2, 
       text: 'child1' 
      }, 
      { 
       id  : 3, 
       text : 'nested optgroup', 
       children: [...] 
      }] 
} 

Demo fiddle

+0

* facepalm *非常感謝。我錯過了這一點,我感到非常愚蠢。 Tbh,感到驚訝的是之前沒有人問過這個問題! –

+1

koala_dev,它看起來像你提交的小提琴不再有效 – IcedDante

25

是,koala_dev的回答以上是正確的。但是,如果您不希望選項組標題爲可選標記,請從傳遞到select2的標題中刪除「標識」字段。兒童項目仍然需要「ID」字段進行選擇。例如:

// `Header One` Is Selectable 
[{ 
    id  : 0, 
    text  : "Header One", 
    children : [{ 
     id : 0, 
     text : "Item One" 
    }, { 
     ... 
    }] 
}] 


// `Header One` Is Not Selectable 
[{ 
    text  : "Header One", 
    children : [{ 
     id : 0, 
     text : "Item One" 
    }, { 
     ... 
    }] 
}] 
+0

這應該是接受的答案 –