Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dynamically adding options and optgroups in Select2

Tags:

With the following html:

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

I'm having no trouble creating a Select2 control dynamically, and adding my options:

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

However, I can't seem to figure out how to add optgroups this way. I found this discussion on github, and this article on a blog, but the former doesn't seem to discuss dynamic optgroup additions and I simply can't make any sense of the latter.

Anyone have any ideas?

like image 636
a.real.human.being Avatar asked Aug 20 '13 23:08

a.real.human.being


2 Answers

I found the answer buried inside the github discussion you linked to, the object structure for optgroups is as follows:

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

Demo fiddle

like image 66
omma2289 Avatar answered Sep 19 '22 08:09

omma2289


Yes, koala_dev's answer above is correct. However, if you do not want option group headers to be selectable tags, then remove the "id" field from headers that you pass into select2. Children[ ] items still need an "id" field to be selectable. For example:

// `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"     }, {          ...     }] }]  
like image 33
bradfordh Avatar answered Sep 20 '22 08:09

bradfordh