You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据第一个下拉菜单的选中值控制另一个下拉菜单的禁用状态

问题根因
  • 你使用的Chosen多选插件会隐藏原生<select>标签,自行渲染可视化的交互组件,直接修改原生select的disabled属性不会同步更新Chosen的渲染结果,因此看不到预期效果。
核心修改点
  • 给第二个select默认添加disabled属性,保证初始状态为禁用
  • 原生select的disabled属性变更后,调用trigger("chosen:updated")通知Chosen插件同步刷新UI
  • 统一使用jQuery语法绑定事件,和已引入的jQuery、Chosen生态兼容
修复后完整代码
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.rawgit.com/harvesthq/chosen/gh-pages/chosen.jquery.min.js"></script>
<link href="https://cdn.rawgit.com/harvesthq/chosen/gh-pages/chosen.min.css" rel="stylesheet" />
<div class="control-group ">
  <label for="company" class="sr-only">machine</label>
  <div class="controls">
    <select name="company" class="form-control" id="company" required>
      <option></option>
      <option value="Hire">Plant Hire</option>
      <option value="Machine">Plant Machine</option>
      <option value="Store">Plant Store</option>
      <option></option>
    </select>
  </div>
</div>
<div class="control-group">
  <div class="controls">
    <label for="machine" class="sr-only">Machinery</label>
    <!-- 这里默认加disabled属性 -->
    <select name="machine" id="machine" disabled data-placeholder="Select 1 or Multiple Machinery" multiple class="chosen-select">
      <option></option>
      <option>TLB 4x4 with a bucket</option>
      <option>Tipper truck 10m^3</option>
      <option>Grader</option>
      <option>Roller (10ton)</option>
      <option>Excavator 30ton with a bucket </option>
      <option>Excavator 30ton with a pecker</option>
      <option>3.5ton pecker for excavator</option>
      <option>TLB 4x4 with a pecker</option>
      <option></option>
    </select>
  </div>
</div>
<script>
$("#company").on("change", function() {
  const $machineEl = $("#machine");
  if ($(this).val() === "Machine") {
    $machineEl.removeAttr("disabled");
  } else {
    $machineEl.attr("disabled", true);
    // 禁用时可以清空已选内容,不需要可删除该行
    $machineEl.val("");
  }
  // 通知Chosen更新状态
  $machineEl.trigger("chosen:updated");
})
$(".chosen-select").chosen({no_results_text: "Nothing Selected"})
</script>

内容的提问来源于stack exchange,提问作者Theophilus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:24:10