我有两个选择框,使用 select2 js 插件。两个下拉菜单都有相同的选项。如果在第一个选择框中选择了第二个选择框中选择的选项,我想禁用它,反之亦然。
这是代码:
jQuery(document).ready(function() {
jQuery('.minimal').select2();
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
<select class="minimal" name="coin1">
<option value="btc">btc</option>
<option value="usd">usd</option>
<option value="eth">eth</option>
</select>
<select class="minimal" name="coin2">
<option value="btc">btc</option>
<option value="usd">usd</option>
<option value="eth">eth</option>
</select>
最佳答案
请参阅下面的代码注释:
$(document).ready(function() {
$('.minimal')
.select2()
.change(function() { // when changed
let val = $(this).val(); // save the current value
$('.minimal').not(this).find('option') // grab options from other select
.prop('disabled', function() { // disable those equal to current value
return $(this).val() == val;
})
.select2(); // re-establish select2
});
});
$(document).ready(function() {
$('.minimal')
.select2()
.change(function() {
let val = $(this).val();
$('.minimal').not(this).find('option').prop('disabled', function() {
return $(this).val() == val;
}).select2();
});
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
<select class="minimal" name="coin1">
<option value="btc">btc</option>
<option value="usd">usd</option>
<option value="eth">eth</option>
</select>
<select class="minimal" name="coin2">
<option value="btc">btc</option>
<option value="usd">usd</option>
<option value="eth">eth</option>
</select>
关于javascript - 如果选中,则禁用第二个选择框的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54755870/