comment laisser jquery select2 désactiver une option dynamicment?

J’ai quelques multisélect et j’utilise jquery select2.Je veux désactiver une option dans d’autres multisélect lorsque cette option est sélectionnée dans un multisélect. J’écris ce code, mais ça marche.

$("select.multiselect").on("change", function(e) { if(e.added){ for(var i=0;i<this.options.length;i++){ var vals = $(this).select2("val"); for(var j=0;j<vals.length;j++){ if(this.options[i].value===vals[j]){ this.options[i].selected=true; } } }; } if(e.removed){ for(var i=0;i<this.options.length;i++){ if(this.options[i].value===e.removed.id){ this.options[i].selected=false; } }; } }); 

comment faire?

C’était plus compliqué que je ne le pensais mais voici ce que j’ai trouvé:

 $('select.multiselect').on('change', function(e) { // the selected values var vals = $(this).select2("val"); // selects contains all the OTHER select forms var selects = $('select').not('#'+$(this).attr('id')); // loop trough all the selects for (var i = 0; i < selects.length; i++) { //re-enable all options before $(selects[i]).find('option').removeAttr('disabled'); // loop trough all the values for (var j = 0; j < vals.length; j++) { // disabled attribute $(selects[i]).find('option[value='+vals[j]+']').attr('disabled', 'disabled'); } } }); 

Voici un violon si vous voulez voir le résultat en action

Assurez-vous que tous vos éléments select ont un id unique.