jquery 如何从事件内部取消onchange事件

yhxst69z  于 2023-02-12  发布在  jQuery
关注(0)|答案(1)|浏览(247)

我有2引导5多选下拉列表,包含相同的信息,如果一个选项被选中,它不能在其他选择。我知道这是一个坏的情况下,但它的要求是如此赤裸裸的与我。
这是我目前掌握的-

$('#ddlOne').on('change', function (e) {
    if ($('#ddlTwo option[value=' + e.currentTarget.value + ']:selected').length > 0){
        alert("This ddlOne option has already been selected in ddlTwo.  Selection canceled...");
        //How to cancel the selection of the currentTarget
    }
});
icnyk63a

icnyk63a1#

我不知道这是否是你想要的,这里是一个简单的演示,有两个下拉列表,当第一个选择一个选项,另一个将禁用在第一个选择的选项,希望它能解决你的问题.

function TestA(a) {
  var b = document.getElementById("BB");
  for (j = 0; j < b.options.length; j++) {
    b.options[j].disabled = false
  }

  for (i = 0; i < a.length; i++) {
    if (a.options[i].selected) {
      for (j = 0; j < b.options.length; j++) {
        if (b.options[j].value == a.options[i].value && a.options[i].value != "Open this select menu") {
          b.options[i].disabled = true;
        }
      }
    }
  }
}

function TestB(a) {
  var b = document.getElementById("AA");
  for (j = 0; j < b.options.length; j++) {
    b.options[j].disabled = false
  }

  for (i = 0; i < a.length; i++) {
    if (a.options[i].selected) {
      for (j = 0; j < b.options.length; j++) {
        if (b.options[j].value == a.options[i].value && a.options[i].value != "Open this select menu") {
          b.options[i].disabled = true;
        }
      }
    }
  }
}
<select class="form-select" multiple aria-label="multiple select example" id="AA" onchange="TestA(this)">
  <option selected>Open this select menu</option>
  <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>
</select>

<select class="form-select" multiple aria-label="multiple select example" id="BB" onchange="TestB(this)">
  <option selected>Open this select menu</option>
  <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>
</select>

相关问题