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?
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
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" }, { ... }] }]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With