Valid Feedback
Looks good!
Looks good!
@
Please choose a username.
Please provide a valid city.
Please provide a valid state.
Please provide a valid zip.
You must agree before submitting.
<form class="0sa1f7 needs-validation" novalidate>
  <div class="nxuzz6 form-row">
    <div class="vv6shq col-md-4 mb-3">
      <label for="validationCustom01">First name</label>
      <input type="text" class="41f5gi form-control" id="validationCustom01" placeholder="First name" value="Mark" required>
      <div class="c0r8z9 valid-feedback">
        Looks good!
      </div>
    </div>
    <div class="z4qk02 col-md-4 mb-3">
      <label for="validationCustom02">Last name</label>
      <input type="text" class="tgnac1 form-control" id="validationCustom02" placeholder="Last name" value="Otto" required>
      <div class="iwnnz5 valid-feedback">
        Looks good!
      </div>
    </div>
    <div class="7zjgwi col-md-4 mb-3">
      <label for="validationCustomUsername">Username</label>
      <div class="uxk150 input-group">
        <div class="7gif8e input-group-prepend">
          <span class="ym2zcf input-group-text" id="inputGroupPrepend">@</span>
        </div>
        <input type="text" class="hwmcud form-control" id="validationCustomUsername" placeholder="Username" aria-describedby="inputGroupPrepend" required>
        <div class="cqh1pl invalid-feedback">
          Please choose a username.
        </div>
      </div>
    </div>
  </div>
  <div class="x6nh47 form-row">
    <div class="l1c07w col-md-6 mb-3">
      <label for="validationCustom03">City</label>
      <input type="text" class="gduxsn form-control" id="validationCustom03" placeholder="City" required>
      <div class="c6xzy9 invalid-feedback">
        Please provide a valid city.
      </div>
    </div>
    <div class="pwbqcm col-md-3 mb-3">
      <label for="validationCustom04">State</label>
      <input type="text" class="263gex form-control" id="validationCustom04" placeholder="State" required>
      <div class="xkl7q8 invalid-feedback">
        Please provide a valid state.
      </div>
    </div>
    <div class="lqg9ua col-md-3 mb-3">
      <label for="validationCustom05">Zip</label>
      <input type="text" class="xxgl81 form-control" id="validationCustom05" placeholder="Zip" required>
      <div class="s3pt3r invalid-feedback">
        Please provide a valid zip.
      </div>
    </div>
  </div>
  <div class="wdtm8e form-group">
    <div class="cgf1nu form-check">
      <input class="fa7nea form-check-input" type="checkbox" value="" id="invalidCheck" required>
      <label class="ppejmf form-check-label" for="invalidCheck">
        Agree to terms and conditions
      </label>
      <div class="gtdndk invalid-feedback">
        You must agree before submitting.
      </div>
    </div>
  </div>
  <button class="gx20ve btn btn-primary" type="submit">Submit form</button>
</form>
// Example starter JavaScript for disabling form submissions if there are invalid fields
(function() {
  'use strict';
  window.addEventListener('load', function() {
    // Fetch all the forms we want to apply custom Bootstrap validation styles to
    var forms = document.getElementsByClassName('needs-validation');
    // Loop over them and prevent submission
    var validation = Array.prototype.filter.call(forms, function(form) {
      form.addEventListener('submit', function(event) {
        if (form.checkValidity() === false) {
          event.preventDefault();
          event.stopPropagation();
        }
        form.classList.add('was-validated');
      }, false);
    });
  }, false);
})();
Tooltip

If your form layout allows it, you can swap the .{valid|invalid}-feedback classes for .{valid|invalid}-tooltip classes to display validation feedback in a styled tooltip. Be sure to have a parent with position: relative on it for tooltip positioning. In the example below, our column classes have this already, but your project may require an alternative setup.

Looks good!
Looks good!
@
Please choose a unique and valid username.
Please provide a valid city.
Please provide a valid state.
Please provide a valid zip.
<form class="kevkqe needs-validation" novalidate>
  <div class="pxe9b9 form-row">
    <div class="l2h0ns col-md-4 mb-3">
      <label for="validationTooltip01">First name</label>
      <input type="text" class="w9nltd form-control" id="validationTooltip01" placeholder="First name" value="Mark" required>
      <div class="b7hyza valid-tooltip">
        Looks good!
      </div>
    </div>
    <div class="wawimu col-md-4 mb-3">
      <label for="validationTooltip02">Last name</label>
      <input type="text" class="cy5e7m form-control" id="validationTooltip02" placeholder="Last name" value="Otto" required>
      <div class="i1vyng valid-tooltip">
        Looks good!
      </div>
    </div>
    <div class="j7w5st col-md-4 mb-3">
      <label for="validationTooltipUsername">Username</label>
      <div class="wxrfjl input-group">
        <div class="scfuq6 input-group-prepend">
          <span class="7o2lzz input-group-text" id="validationTooltipUsernamePrepend">@</span>
        </div>
        <input type="text" class="smy422 form-control" id="validationTooltipUsername" placeholder="Username" aria-describedby="validationTooltipUsernamePrepend" required>
        <div class="no5uiv invalid-tooltip">
          Please choose a unique and valid username.
        </div>
      </div>
    </div>
  </div>
  <div class="box0z2 form-row">
    <div class="36i1bj col-md-6 mb-3">
      <label for="validationTooltip03">City</label>
      <input type="text" class="7c6ap8 form-control" id="validationTooltip03" placeholder="City" required>
      <div class="vbyt4o invalid-tooltip">
        Please provide a valid city.
      </div>
    </div>
    <div class="3dt4jf col-md-3 mb-3">
      <label for="validationTooltip04">State</label>
      <input type="text" class="y76lsv form-control" id="validationTooltip04" placeholder="State" required>
      <div class="vmh84k invalid-tooltip">
        Please provide a valid state.
      </div>
    </div>
    <div class="5qc5s4 col-md-3 mb-3">
      <label for="validationTooltip05">Zip</label>
      <input type="text" class="70czim form-control" id="validationTooltip05" placeholder="Zip" required>
      <div class="aoobom invalid-tooltip">
        Please provide a valid zip.
      </div>
    </div>
  </div>
  <button class="o02db9 btn btn-primary" type="submit">Submit form</button>
</form>