2013-08-20 23 views
23

z następującymi html:Dynamicznie dodając opcje i optgroups w Select2

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

Mam problemy z utworzeniem kontrolę Select2 dynamicznie i dodając swoje opcje:

// 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 
}); 

Jednak mogę Wygląda na to, że w ten sposób dodasz optgroups. Na blogu znalazłem this dyskusję na temat github i artykuł this, ale ten pierwszy wydaje się nie omawiać dodatków dynamicznych i po prostu nie mogę zrozumieć tego drugiego.

Ktoś ma jakieś pomysły?

Odpowiedz

34

Znalazłem odpowiedź pochowany wewnątrz dyskusji github ty związane, struktura obiektu dla optgroups jest następujący:

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

Demo fiddle

+0

* facepalm * Wielkie dzięki. Czuję się tak głupio, że tego nie zauważyłem. Tbh, zaskoczony, że nikt wcześniej o to nie zapytał! –

+1

koala_dev, wygląda na to, że przysłane przez ciebie skrzypce już nie działa – IcedDante

25

Tak, odpowiedź koala_dev za powyższe jest prawidłowe. Jeśli jednak nie chcesz, aby nagłówki grup opcji były tagami do wyboru, usuń pole "id" z nagłówków przekazywanych do select2. Elementy dziecięce [] nadal wymagają pola "id" do wybrania. Na przykład:

// `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

To powinna być zaakceptowana odpowiedź –

Powiązane problemy