javascript - jQuery 绑定(bind)三个选择菜单隐藏/显示

标签 javascript jquery html css menu

我有三个选择菜单。

<form>
  <select id="mass" name="mass">
    <option value="Blank" selected>--</option>
    <option value="Light">Light</option>
    <option value="Medium">Medium</option>
    <option value="Heavy">Heavy</option>
  </select>
  <select id="colour" name="colour">
    <option value="Blank" selected>--</option>
    <option value="Red">Red</option>
    <option value="Green">Green</option>
    <option value="Blue">Blue</option>
  </select>
  <select id="textureColour" name="textureColour">
    <option value="Blank" selected>--</option>
    <option value="Orange">Orange</option>
    <option value="Purple">Purple</option>
    <option value="Black">Black</option>
  </select>
</form>

我希望显示第一个菜单,隐藏第二个和第三个菜单,直到被调用。

如果第一个菜单的默认选项发生变化,我希望显示第二个菜单。

在第二个菜单中进行选择后,我希望显示第三个菜单。

但是,如果第一个菜单中的选定值是“中”或“重”,我只希望显示第三个菜单。选择默认的“空白”或“浅色”应该会隐藏第三个菜单。

目前它没有像我希望的那样运行。

$(function() {
  var mass = $('#mass');
  var colour = $('#colour');
  var textureColour = $('#textureColour');

  mass.change(function() {
    if (mass.val() != 'Blank') {
      $(colour).show();
    } else {
      $(colour).hide();
    }
    if (mass.val() === 'Light') {
      $(textureColour).show();
    } else {
      $(textureColour).hide();
    }
  }).trigger('change');

  colour.change(function() {
    if ((mass.val() === 'Medium') || (mass.val() === 'Heavy')) {
      $(textureColour).show();
    } else {
      $(textureColour).hide();
    }
  }).trigger('change');

});

JSFiddle

最佳答案

所以,我猜你想要这样的东西

$(function() {
  var mass = $('#mass');
  var colour = $('#colour');
  var textureColour = $('#textureColour');

  mass.change(function() {
    if (mass.val() != 'Blank') {
      $(colour).show();
      $(colour).change();
    } else {
      $(colour).val('Blank');
      $(textureColour).val('Blank');
      $(colour).hide();
      $(textureColour).hide();
    }
  });

  colour.change(function() {
    if ((mass.val() === 'Medium') || (mass.val() === 'Heavy') && colour.val() !== 'Blank') {
      $(textureColour).show();
    } else {
      $(textureColour).hide();
      
    }
  });

});
#colour {
  display: none;
}

#textureColour {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  <select id="mass" name="mass">
    <option value="Blank" selected>--</option>
    <option value="Light">Light</option>
    <option value="Medium">Medium</option>
    <option value="Heavy">Heavy</option>
  </select>
  <select id="colour" name="colour">
    <option value="Blank" selected>--</option>
    <option value="Red">Red</option>
    <option value="Green">Green</option>
    <option value="Blue">Blue</option>
  </select>
  <select id="textureColour" name="textureColour">
    <option value="Blank" selected>--</option>
    <option value="Orange">Orange</option>
    <option value="Purple">Purple</option>
    <option value="Black">Black</option>
  </select>
</form>

希望对您有所帮助:)

关于javascript - jQuery 绑定(bind)三个选择菜单隐藏/显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38365049/

相关文章:

jquery - 如何删除导航和主要内容之间多余的空白?

javascript - 单击时如何选择(此)图像?

jquery - 在 jQuery 中将closest() 和 html() 放在一起的问题

javascript - 使用占位符和替换对象格式化 JavaScript 字符串?

javascript - 如何使用 Knockout JS 数组映射根据输入条件使选择选项绑定(bind)默认?

asp.net-mvc-3 - 验证 HTML 时出错 : The for attribute of the label element must refer to a form control

javascript - 通过表单在 Flask 上发布数据会出现 400 Bad Request

javascript - HTML CSS JS 缩小架构

javascript - jquery 表格行点击功能

javascript数组读取表单数据最佳实践