禁用多个 select 选项中的一个选项

Disable an option of multiple select options

我在 BootStrap 中有多个 select 选项,我希望如果用户 select 的选项值=1,那么他们不能选择值=5 的选项,反之亦然

<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.14/dist/js/bootstrap-select.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.14/dist/css/bootstrap-select.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" />

试一试。这不是微不足道的

记住从0开始的JS数字数组和集合,但我将值存储在所选数组中

const pairs = [, 5, 6, , 1]; // 1=5, 2=6 5:1
$(function() {
  $(".selectpicker").selectpicker()
  $(".selectpicker").on("changed.bs.select", function(e, clickedIndex, newValue, oldValue) {
    // const selected = $("option:selected", this).map((i, ele) => ele.value).get();
    $("option", this).prop("disabled", false); // enable all
    $("option:selected", this).each(function() { // disable selected pair
      const paired = pairs[$(this).val()];
      if (paired) {
        // if value i is among the selected, disable value pairs[i]
        console.log("value", this.value, "disable", paired)
        $(".selectpicker").find('option[value=' + paired + ']')
          .prop("selected", false)
          .prop("disabled", true);
      }
    });
    // refresh the select
    $('.selectpicker').selectpicker('refresh');
  });
});
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.14/dist/js/bootstrap-select.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.14/dist/css/bootstrap-select.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" />

<select id="sel1" class="selectpicker" multiple>
  <option value="1">One</option>
  <option value="2">Two</option>
  <option value="3">Three</option>
  <option value="4">Four</option>
  <option value="5">Five</option>
  <option value="6">Six</option>
  <option value="7">Seven</option>
</select>