I've seen a lot examples of Select2
option tags set with "data-" attributes and I would like to do it.
I'm using ajax to get the data. I get the ID
and the TEXT
needed to build the select.
But how can I add more attributes to it?
I just didn't find the way to add them.
$(element).select2({
placeholder: 'Select one...',
width: '100%',
minimumInputLength: 2,
ajax: {
url: '/my/url',
dataType: 'json',
data: function(params) {
return {
q: params.term,
page: params.page
};
},
processResults: function(data, page) {
console.log(data);
return {
results: data
};
},
cache: true
}
});
New options can be added to a Select2 control programmatically by creating a new Javascript Option object and appending it to the control: var data = { id: 1, text: 'Barn owl' }; var newOption = new Option(data. text, data.id, false, false); $('#mySelect2'). append(newOption).
Select2 jQuery plugin is easy to add on the <select > element. Need to call the select2() method on the selector to initialize. If you adding select2 on a class or select element and when you add an element dynamically then select2 is not initialized on that element.
In the past, Select2 required an option called initSelection that was defined whenever a custom data source was being used, allowing for the initial selection for the component to be determined. This has been replaced by the current method on the data adapter.
Select2 requires that the id property is used to uniquely identify the options that are displayed in the results list. If you use a property other than id (like pk ) to uniquely identify an option, you need to map your old property to id before passing it to Select2.
This solution applies to Select2 versions 4.0 or higher.
Assuming the attributes your talking about are loaded in the array you are returning in processResults. For example, if you are selecting a record like ('id':1,'text':'some-text','custom_attribute':'hello world')
Then on a change event you can do:
data=$("#selector").select2('data')[0];
console.log(data.custom_attribute);//displays hello world
Hope it helps..
I am not sure what exactly you are asking but if you want to add data attribute you can do like this..
In Jquery:
$(element).attr('data-info', '222');
In javascript:
document.getElementById('elementId').setAttribute('data',"value: 'someValue'");
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