Multiple Select2 InitSelection Values
http://stackoverflow.com/questions/25707054/setting-value-in-select2-using-javascript-object-as-data-source
by odiseo
HTML
<script src="//cdnjs.cloudflare.com/ajax/libs/select2/3.5.0/select2.min.js"></script>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/select2/3.5.0/select2.css">
<div id="publisher-selector-1"></div>
<div>
<input id="publisher-selector-2" value="1,3,4" />
</div>
JavaScript
(function($) {
selections = [{
id: 1,
text: 'Microsoft'
}, {
id: 2,
text: 'Oracle'
}, {
id: 3,
text: 'VMWare'
}, {
id: 4,
text: 'IBM'
}, {
id: 5,
text: 'Cisco'
}];
var extractPreselectedIds = function(element) {
var preselectedIds = [];
if (element.val())
$(element.val().split(",")).each(function() {
preselectedIds.push({
id: this
});
});
console.log("extractPreselectedIds");
return preselectedIds;
};
var preselect = function(preselectedIds) {
var preSelections = [];
for (index in selections)
for (id_index in preselectedIds)
if (selections[index].id == preselectedIds[id_index].id)
preSelections.push(selections[index]);
console.log('preselect', preSelections);
return preSelections;
};
var filterOutSelected = function() {
var selectedValues = $('#publisher-selector-2').val().split(",");
var res = selections.filter(function(item) {
return !selectedValues.find(function(selectedID) {
return selectedID == item.id
});
});
return res;
};
var adjustPlaceHolder = function() {
//Setting place holder
var totalSelections = ($("#publisher-selector-2").val() != "") ? $("#publisher-selector-2").val().split(",").length : 0;
console.log("totalSelections", totalSelections);
console.log("$(#publisher-selector-2).val()", $("#publisher-selector-2").val());
var placeHolderText = (totalSelections > 0) ? totalSelections + " Publisher(s)" : "None";
$("#publisher-selector-1").attr("data-placeholder", placeHolderText);
$("#publisher-selector-1").data("select2").setPlaceholder();
};
$('#publisher-selector-1').select2({
placeholder: 'None',
minimumInputLength: 0,
multiple: false,
allowClear: true,
data: function() {
return {
results: filterOutSelected()
};
},
initSelection: function(element,...