Show/Hide State/Province

Show or hide the fields for state or province based on the country chosen.

by Amy Ruddy

HTML

<!-- Bootstrap -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">

<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">

<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>

<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js" integrity="sha384-o+RDsa0aLu++PJvFqy8fFScvbHFLtbvScb8AjopnFD+iEQ7wo/CG0xlczd+2O/em" crossorigin="anonymous"></script>

<div class="mainContent py-5">
  <div class="box mx-auto shadow rounded-bottom">
    <h3 class='py-3 rounded-top'><span class="far fa-address-card"></span> Show or Hide fields based on selection</h3>
    <ul><span>When Canada is selected and vice versa:</span>
      <li>Show additional address inputs (3 and 4)</li>
      <li>Hide State and show Province</li>
      <li>Change Zip to Postal Code</li>
    </ul>

    <form class='container'>
      <div class="form-group">
        <select id="inputCountry" class="form-control">
          <option>Country</option>
          <option id="us" value="us">United States</option>
          <option id="can" value="can">Canada</option>
        </select>
      </div>

      <div class="form-row">
        <div class="form-group col-md-6">
          <input type="text" class="form-control" id="inputAddress" placeholder="Address 1">
        </div>

        <div class="form-group col-md-6">
          <input type="text" class="form-control" id="inputAddress2" placeholder="Address 2">
        </div>
      </div>

      <div id='canAddressDiv'>
        <div class="form-row">
          <div class="form-group...

CSS

html,
.mainContent {
  background-color: #f1f1f1;
}

.container {
  background-color: #fff;
  padding: 10px 25px;
}

.box {
  background-color: #fff;
  max-width: 600px;
}

h3 {
  background-color: #0755a9;
  color: #fff !important;
  width: 100%;
  padding-right: 15px;
  padding-left: 15px;
  margin-right: auto;
  margin-left: auto;
}

#provinceDiv,
#canAddressDiv {
  display: none;
}

ul span {
  margin-left: -20px;
  font-size: 1.2rem;
  font-weight: bold;
  border-bottom: 1px solid #777;
}

JavaScript

$("#inputCountry").change(function() {
  if ($("#inputCountry option:selected").val() == 'us') {
    $('#stateDiv').show();
    $("#provinceDiv, #canAddressDiv").hide();
    $('#inputZip').attr('placeholder', 'Zip');

  }
  if ($("#inputCountry option:selected").val() == 'can') {
    $('#stateDiv').hide();
    $("#provinceDiv, #canAddressDiv").show();
    $('#inputZip').attr('placeholder', 'Postal Code');
  } else {
    $('#stateDiv').show();
    $("#provinceDiv, #canAddressDiv").hide();
    $('#inputZip').attr('placeholder', 'Zip');
  }
});