javascript - 如果选中,则禁用第二个选择框的选项

标签 javascript jquery jquery-select2

我有两个选择框,使用 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/

相关文章:

javascript - 如何在jquery中比较两个格式为 "dd-mm-yyyy hh:mm"的日期

jquery - 当某些字段被 CSS 隐藏时(在 Accordion 容器中),设置选项卡索引很有用

javascript - 从其他元素获取宽度以设置为当前元素但不等于 jQuery

php - Laravel Dusk - 调用数组上的成员函数 click()

jquery - 动态添加 Select2 字段到表单

javascript - select2 v4 用于实时搜索 - 能够从下拉列表中选择或提交关键字

javascript - Visual Studio 2015 不支持的源映射格式

javascript - JavaScript 可以在 Visual Studio 中分成区域吗?

javascript - 填充选择选项不适用于 selectpicker 类

javascript - ES6 : Call instance functions by their names