如何根据另一个下拉菜单值禁用下拉菜单

Posted

技术标签:

【中文标题】如何根据另一个下拉菜单值禁用下拉菜单【英文标题】:How do I disable a dropdown menu based on another dropdown menu value 【发布时间】:2021-12-31 12:21:22 【问题描述】:

下面是我的 html 代码和脚本,用于从下拉菜单中选择多个选项。

我想在一个下拉列表中选择特定值时为用户提供一个额外的选项,以便用户提供额外的输入。

当在第一个下拉菜单中选择“Plant Machine”时,下面的脚本似乎没有禁用第二个下拉菜单:

<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>
    <select name="machine" id="machine" 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>
  document.getElementById('company').onchange = function() 
  
    if (this.value == "Machine") 
      document.getElementById('machine').removeAttribute('disabled');
     else 
      document.getElementById('machine').setAttribute('disabled', true);
    
    
  
</script>

<script>
  $(".chosen-select").chosen(
    no_results_text: "Nothing Selected"
  )
</script>

【问题讨论】:

这有帮助吗? ***.com/questions/13149228/… 【参考方案1】:

改变else条件下的代码如下:

document.getElementById('machine').disabled=true;

【讨论】:

我改了,结果还是一样 请检查更新的答案。【参考方案2】:

因为您有一个样式,它使用其他元素作为呈现的选择。选择本身有一个 display: none 样式,它实际上被禁用了。使用类似指针事件的东西:无;在 id="machine_chosen" 的 div 上。您也可以寻找其他选项来禁用它。

也加上上面交替使用

document.getElementById('machine').disabled = 'false';

【讨论】:

感谢使用 `document.getElementById('machine_chosen').style.removeProperty('pointer-events'); ` 和 document.getElementById('machine_chosen').style.setProperty('pointer-events', 'none');

以上是关于如何根据另一个下拉菜单值禁用下拉菜单的主要内容,如果未能解决你的问题,请参考以下文章

如何创建基于另一个下拉菜单的答案出现的下拉菜单

使用javascript将下拉菜单设置为默认值[重复]

启用/禁用单选按钮选择下拉菜单

删除已从另一个下拉菜单中选择的下拉值

使用AngularJS在下拉列表中按选定值启用/禁用按钮

Java如何通过下拉菜单进入另一个页面,求大神指导