使用 jQuery 禁用多个 select2 字段

Disable multiple select2 field with jQuery

我创建了一个复选框字段和多个 select2 字段,我启用了复选框字段,但哪个更改不影响多个 select 字段。禁用复选框后,我需要禁用多个 select 字段。这可能吗?我试过下面的代码。

$('select option').prop("disabled", true);

您当前引用的是 select 的特定选项,我认为您需要定位父 select 元素。

并且根据documentation,参见选择2禁用模式,您需要这样做:

$("select").select2("enable", false);

Nvm,我看到我提到了旧文档,父元素是正确的。

使用 $(".sel2").prop("disabled", true) 禁用 select2 有关详细信息,请参阅文档 https://select2.org/appearance

$(document).ready(function() {
    $('.sel2').select2();
});
$(document).on('click','#disable',function() {
  if ($(this).prop("checked")) {
  //console.log("in");
    $(".sel2").prop("disabled", true);
  }
})
<link href="https://cdn.jsdelivr.net/npm/select2@4.0.12/dist/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://cdn.jsdelivr.net/npm/select2@4.0.12/dist/js/select2.min.js"></script>
<select class="sel2" name="state">
  <option value="AL">one</option>
  <option value="AL">two</option>
</select>
<select class="sel2" name="state">
  <option value="AL">one</option>
  <option value="AL">two</option>
</select>
<select class="sel2" name="state">
  <option value="AL">one</option>
  <option value="AL">two</option>
</select>
<input type="checkbox" id="disable" value="Disable select" /> Disable
如果你想在选中和未选中复选框时启用和禁用 select2 字段

$(document).on('click','#disable',function() {
  if ($(this).prop("checked")) {
    $(".sel2").prop("disabled", true);
  }else{
    $(".sel2").prop("disabled", false);
  }
})
$("#disable").change(function() {

  if ($(this).is(":checked")) {
    $("select").attr('disabled', 'disabled');
  }
})

您可以使用 is checked 来检查复选框是否被选中