问题
I am trying to use the Select2 plugin to have 4 dropdown lists that depend on each other. I have struggled to find the right way to update the data that loads the options in.
My goal is to load the new data via ajax, but once I have it in the client I am unable to add the new data to the select list.
The code I have tried is here:
$(#"a3").select2({
placeholder: "select an item",
allowClear: true}).on("change",
function (e) {
var results = $.get("url?id=2",
function (data, textStatus, jqXHR) {
$(this).select2({ data: { results: data, text: "Name" } });
});
}
);
There is another question here select2 changing items dynamically but the solution there worked with Select2 v3.2 but not Select2 v3.3
回答1:
Igor has come back to me with a way to do this
var data=[...];
$().select2({data: function() {return {results:data};}});
/// later
data=[...something else];
// next query select2 will use 'something else' data
回答2:
The correct format is:
.select2("data", {...})
回答3:
For Select2 v4.x, here is a small js class.
Using this, options of a select2 list box will be loaded/refreshed by ajax based on selection of another select2 list box. And the dependency can be chained.
For example -
new Select2Cascade($('#country'), $('#province'), 'path/to/geocode', {type:"province", parent_id: ''});
new Select2Cascade($('#province'), $('#district'), 'path/to/geocode', {type:"district", parent_id: ''});
Check the demo on codepen. Also here is a post on how to use it.
来源:https://stackoverflow.com/questions/14797261/select2-dependent-dropdown-lists