Javascript 如何让jquery select2动态禁用一个选项?
我有一些multiselect,我使用jquery select2。当在一个multiselect中选择此选项时,我想禁用其他multiselect中的一个选项。 我写了这段代码,但它确实有效Javascript 如何让jquery select2动态禁用一个选项?,javascript,jquery,jquery-select2,Javascript,Jquery,Jquery Select2,我有一些multiselect,我使用jquery select2。当在一个multiselect中选择此选项时,我想禁用其他multiselect中的一个选项。 我写了这段代码,但它确实有效 $("select.multiselect").on("change", function(e) { if(e.added){ for(var i=0;i<this.options.length;i++){ var vals = $(this).sel
$("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;
}
};
}
});
$(“select.multiselect”)。关于(“更改”,函数(e){
如有(e.增补){
对于(var i=0;i来说,这比我想象的要复杂,但我想到的是:
$('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');
}
}
});
$('select.multiselect')。关于('change',函数(e){
//选择的值
var val=$(此值)。选择2(“val”);
//selects包含所有其他select表单
var selects=$('select')。not('#'+$(this.attr('id'));
//通过所有选择循环
对于(变量i=0;i
如果你想看到行动的结果
确保所有select
元素都具有唯一的id
在最新版本中,您似乎必须调用$(object)。更新选项后再次选择2()?