Jquery/Javascript具有相同选项的多选下拉列表

Jquery/Javascript具有相同选项的多选下拉列表,javascript,jquery,Javascript,Jquery,我有一个问题,我可以有多个选择下拉控件与相同的选项,我需要禁用该选项,如果它在其中一个下拉菜单中选择,并重新启用,如果该选项被重置 $'select'.change函数{ 如果此值为.value!=-1{ $'select1,select2,select3,select4,select5'。不是这个 .children选项[value='+this.value+'] .attr'disabled',true .兄弟姐妹。移除“残疾”; } }; 身体{ 利润率:20px; } 挑选{ 边界:0

我有一个问题,我可以有多个选择下拉控件与相同的选项,我需要禁用该选项,如果它在其中一个下拉菜单中选择,并重新启用,如果该选项被重置

$'select'.change函数{ 如果此值为.value!=-1{ $'select1,select2,select3,select4,select5'。不是这个 .children选项[value='+this.value+'] .attr'disabled',true .兄弟姐妹。移除“残疾”; } }; 身体{ 利润率:20px; } 挑选{ 边界:0; 宽度:100%; } 运输署{ 宽度:45px; } 节约成本 选择 1. 2. 3. 4. 5. 内在品质 选择 1. 2. 3. 4. 5. 提高客户满意度 选择 1. 2. 3. 4. 5. 改善员工sat 选择 1. 2. 3. 4. 5. 遵守法规遵从性 选择 1. 2. 3. 4. 5.
下面是工作片段

代码中的两个更改是:

每次所选选项更改时,我都会重新评估可用选项。因此,如果选择了1和3,将确保在所有选择元素上禁用它们

如果没有此选项,当选择1时,将在所有图元上禁用该选项。但当您选择2时,2将在所有元素上禁用,1将在它们上重新启用。因此,为了避免此类问题,我首先跟踪所有应该禁用的值,然后针对每个select元素禁用相应的option元素

您应该使用.attr'disabled'、'disabled'或与jQuery 1.7+一起使用.attr'disabled',true,而不是.attr'disabled',true

$'select'.change函数{ 重新评估可用期权; }; 函数重新评估可用选项{ var selectElements=$'select1、select2、select3、select4、select5'; var selectedValues=[]; 选择Elements.eachfunction{ var值=$this.val; 值>=0&&selectedValues.pushvalue; }; //禁用所有选定的值。 选择Elements.eachfunction{ var currentValue=$this.val; $this.children'option' .removeAttrdisabled .每个功能{ var值=此值; 如果选择了Values.indexOfvalue>=0&¤tValue!=value{ $this.attr'disabled',disabled; } }; }; } 身体{ 利润率:20px; } 挑选{ 边界:0; 宽度:100%; } 运输署{ 宽度:45px; } 节约成本 选择 1. 2. 3. 4. 5. 内在品质 选择 1. 2. 3. 4. 5. 提高客户满意度 选择 1. 2. 3. 4. 5. 改善员工sat 选择 1. 2. 3. 4. 5. 遵守法规遵从性 选择 1. 2. 3. 4. 5.
您只指定了“禁用”选项。 为了获得良好的实践,您应该指定启用该选项

复制您的函数,让它将禁用的值还原为false而不是true。 应该看起来像:

$('select').change(function() {

if (this.value != "-1") {
$('#select1, #select2,#select3, #select4, #select5').not(this)
  .children('option[value=' + this.value + ']')
  .attr('disabled', false)
  .siblings().removeAttr('disabled');

}else if (this.value = "1") {
$('#select1, #select2,#select3, #select4, #select5').not(this)
  .children('option[value=' + this.value + ']')
  .attr('disabled', true)
  .siblings().removeAttr('disabled');
}
});

谢谢您的回复,但您的回答也不正确,我的做法是:在每个选择控件中选择1 2 3 4 5,然后在第一个选择选项中选择“已选择”,1在其他选择中仍处于禁用状态,如果未选择某个选项,则需要重新选择-enabled@TheConfusedCoder我刚刚意识到了错误,并修复了它。你介意再查一下吗?另外,如果您注意到任何具体问题,请告诉我。非常感谢您,这正是我想要的。它工作得很好。如果在代码中的任何地方都将“-1”更改为0,会发生什么情况?我很少使用负值。编辑:我注意到“正确”答案处的评论。祝你好运