Javascript 还有一个。我理解OP的要求,因此选项的隐藏将在任何方向进行,或可能跨越多个选择器框。下面的脚本将完全做到这一点:如果您在一个选择器中选择一个选项,它将通过已定义组的其他选择器$grp(通过执行$grp.not(this)。每个((i,trg)=>…)),并将隐藏/显示所有选项,这取决于他们是否已经在其他地方被选中
Javascript 还有一个。我理解OP的要求,因此选项的隐藏将在任何方向进行,或可能跨越多个选择器框。下面的脚本将完全做到这一点:如果您在一个选择器中选择一个选项,它将通过已定义组的其他选择器$grp(通过执行$grp.not(this)。每个((i,trg)=>…)),并将隐藏/显示所有选项,这取决于他们是否已经在其他地方被选中,javascript,jquery,Javascript,Jquery,$(to).toggle(…)方法根据trg的同级选择器中存在的具有相同值的选定选项设置trg中每个选项(to)的可见性(同样,仅限于当前组$grp) 也许脚本有点过于精简,不便于阅读,但它显示了当您使用jQuery的强大功能时,只需很少的代码就可以实现多少 const$grp=$('select[id^=id\u my\u options])//定义选择器组 $grp.on('change',function(ev){//绑定更改事件。。。 $grp.not(this).each((i,tr
$(to).toggle(…)
方法根据trg
的同级选择器中存在的具有相同值的选定选项设置trg
中每个选项(to
)的可见性(同样,仅限于当前组$grp
)
也许脚本有点过于精简,不便于阅读,但它显示了当您使用jQuery的强大功能时,只需很少的代码就可以实现多少
const$grp=$('select[id^=id\u my\u options])//定义选择器组
$grp.on('change',function(ev){//绑定更改事件。。。
$grp.not(this).each((i,trg)=>//处理单击的每个同级选择器(trg)
//选择器(此),但仅在jquery中
//选择$grp
$('option[value!=“”]',trg).each((j,to)=>//用于的同级选择器的所有选项
//trg(在jquery选择$grp中):
$(to).toggle($grp.not(trg).find('option[value='+to.value+']:selected')。length==0))
//切换该选项的可见性
)
})
选择。。
汽车
房子
飞机
Car2
房子2
飞机2
另一种选择
Car3
第三家
飞机3
还有一些不相关的选择
Car3
第三家
飞机3
那么,到目前为止您尝试了什么?我添加了上面的代码。希望您能提供帮助。以后,请像我在回答中所做的那样,将您的代码添加到代码段(
工具栏中的图标)中。否则很难读。另外,我假设您的选项具有相同的值。(Car在两个选择中都有值C)。如果没有,告诉我,我会改变答案谢谢你@MihaiT,它起作用了。下次我将在代码段中添加我的代码。那么,到目前为止您尝试了什么?我添加了上面的代码。希望您能提供帮助。以后,请像我在回答中所做的那样,将您的代码添加到代码段(
工具栏中的图标)中。否则很难读。另外,我假设您的选项具有相同的值。(Car在两个选择中都有值C)。如果没有,告诉我,我会改变答案谢谢你@MihaiT,它起作用了。下次我将在代码段中添加我的代码。
<select name="my_option_one" required id="id_my_option_one">
<option value="" selected>Choose..</option>
<option value="C">Car</option>
<option value="H">House</option>
<option value="A">Airplane</option>
</select>
<select name="my_option_two" id="id_my_option_two" multiple="multiple">
<option value="C">Car</option>
<option value="H">House</option>
<option value="A">Airplane</option>
</select>
$(document).ready(function() {
$("#id_my_option_one").change(function() {
if ($(this).val() === 'C') {
$("#id_my_option_two option[value='C']").options[0].remove();
$('select[name=my_option_two] option:eq(1)').hide();
$("#id_my_option_two option[value=" + 'C' + "]").hide();
$("#id_my_option_two option[value='C']").attr('disabled','disabled').hide();
}
});
});
<select name="my_options" id="firstblock" onchange="disable(2,this.value);">
<option value="" selected>Choose..</option>
<option value="C">Car</option>
<option value="H">House</option>
<option value="A">Airplane</option>
</select>
<select name="my_options" id="secondblock" onchange="disable(1,this.value);">
<option value="" selected>Choose..</option>
<option value="C">Car</option>
<option value="H">House</option>
<option value="A">Airplane</option>
</select>
<script>
function disable(needtoblock,val){
console.log(needtoblock+" "+val);
if(val != ""){
if(needtoblock == 1){
$("#firstblock option[value='"+val+"']").prop('disabled', true);
}else if(needtoblock == 2){
$("#secondblock option[value='"+val+"']").prop('disabled', true);
}else{
}
}else{
$("#secondblock option").prop('disabled', false);
$("#firstblock option").prop('disabled', false);
}
}
</script>