user5148719
user5148719

Reputation:

Show/hide dropdown based on another dropdown selection

When a user selects "Yes" for Menu1, I am trying to make Menu2 appear. When "Yes" is selected for Menu3, Menu4 should appear, etc. What am I missing or doing wrong? Thank you in advance!

$(function() {
  $("#Menu2").hide();
  $("#Menu3").hide();
  $("#Menu4").hide();
  $("#Menu5").hide();
  $("#Menu6").hide();

  $("#Menu1").change(function() {
    if ($(this).val() == "Yes") {
      $("#Menu2").show();
    } else {
      $("#Menu2").hide();
    }
  });
  $("#Menu2").change(function() {
    if ($(this).val() == "Yes") {
      $("#Menu3").show();
    } else {
      $("#Menu3").hide();
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-row">
  <div class="form-group col-md-4">
    <label for="Menu1">Menu1</label>
    <select class="form-control" name="name" id="Menu1">
      <option value="">--Please choose an option--</option>
      <option value="Yes">Yes</option>
      <option value="No">No</option>
    </select>
  </div>
  <div class="form-group col-md-4" id="Menu2">
    <label for="Menu2">Menu2</label>
    <select class="form-control" name="pets" id="Menu2">
      <option value="">--Please choose an option--</option>
      <option value="dog">Yes</option>
      <option value="cat">No</option>
    </select>
  </div>
  <div class="form-group col-md-4" id="Menu2">
    <label for="Menu2">Menu2</label>
    <select class="form-control" name="pets" id="Menu2">
      <option value="">--Please choose an option--</option>
      <option value="dog">Yes</option>
      <option value="cat">No</option>
    </select>
  </div>

Upvotes: 0

Views: 2177

Answers (2)

Ram
Ram

Reputation: 504

Your html and javascript both are wrong. you can not give same id for multiple controls. Here is an example

Live Demo

<div class="form-row">
  <div class="form-group col-md-4">
    <label for="Menu1">Menu1</label>
    <select class="form-control" name="name" id="Menu1">
      <option value="">--Please choose an option--</option>
      <option value="Yes">Yes</option>
      <option value="No">No</option>
    </select>
  </div>
  <div class="form-group col-md-4" id="divMenu2">
    <label for="Menu2">Menu2</label>
    <select class="form-control" name="pets" id="Menu2">
      <option value="">--Please choose an option--</option>
      <option value="Yes">Yes</option>
      <option value="No">No</option>
    </select>
  </div>
  <div class="form-group col-md-4" id="divMenu3">
    <label for="Menu2">Menu3</label>
    <select class="form-control" name="pets" id="Menu2">
      <option value="">--Please choose an option--</option>
      <option value="Yes">Yes</option>
      <option value="No">No</option>
    </select>
  </div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

$(function() {
  $("#divMenu2").hide();
  $("#divMenu3").hide();

  $("#Menu1").change(function() {
    if ($(this).val() == "Yes") {
      $("#divMenu2").show();
    } else {
      $("#divMenu2").hide();
    }
  });
  $("#Menu2").change(function() {
    if ($(this).val() == "Yes") {
      $("#divMenu3").show();
    } else {
      $("#divMenu3").hide();
    }
  });
});

Upvotes: 0

Souhailhimself
Souhailhimself

Reputation: 231

The problem was in the naming and also in the structure of your jQuery

$(document).ready(function(){
   $("#menu2").hide();
   $("#menu3").hide();

});
$(document).on('change',"#select1", function () {
   if ($(this).val() == "Yes") {
       $("#menu2").show();
   } else {
       $("#menu2").hide();
   }
});
$(document).on('change',"#select2", function () {
   if ($(this).val() == "Yes") {
       $("#menu3").show();
   } else {
       $("#menu3").hide();
   }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

    <div class="form-group col-md-4">
        <label for="Menu1">Menu1</label>
        <select class="form-control" name="name1" id="select1">
            <option value="">--Please choose an option--</option>
            <option value="Yes">Yes</option>
            <option value="No">No</option>
        </select>
    </div>
    <div class="form-group col-md-4" id="menu2">
        <label for="Menu2">Menu2</label>
        <select class="form-control" name="name2" id="select2">
            <option value="">--Please choose an option--</option>
            <option value="Yes">Yes</option>
            <option value="No">No</option>
        </select>
    </div>
    <div class="form-group col-md-4" id="menu3">
        <label for="Menu2">Menu3</label>
        <select class="form-control" name="name3" id="select3">
            <option value="">--Please choose an option--</option>
            <option value="Yes">Yes</option>
            <option value="No">No</option>
        </select>
    </div>
    </div>

Upvotes: 0

Related Questions