Bootstrap contact form

Chapter 4 of my book : https://leanpub.com/frontend

by Leonardo Trimarchi

HTML

<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootswatch/3.1.1/superhero/bootstrap.min.css">
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<script src="//cdn.jsdelivr.net/spinjs/1.3.0/spin.min.js"></script>
<script src="http://fgnass.github.io/spin.js/jquery.spin.js"></script>
<script src="//cdn.jsdelivr.net/humane.js/3.1.0/humane.min.js"></script>
<link rel="stylesheet" href="//cdn.jsdelivr.net/humane.js/3.1.0/themes/jackedup.css">
<div class="container">
<div class="row">
  <div class="col-md-6 col-md-offset-3">
    <div class="well well-sm">
      <form id="contact-form" class="form-horizontal" action="/echo/json/" method="post">
      <fieldset>
        <legend class="text-center">Contact us</legend>
        <div id="success-container" class="text-center" style="display:none;">
          <p class="lead text-success"><span class="glyphicon glyphicon-ok"></span></p>
          <p class="lead">Your message has been sent successfully!</p>
        </div>

        <div id="form-container">

          <!-- Name input-->
          <div class="form-group">
            <label class="col-md-3 control-label" for="name">Name</label>
            <div class="col-md-9">
              <input id="name" name="name" type="text" placeholder="Your name" class="form-control">
            </div>
          </div>

          <!-- Email input-->
          <div class="form-group">
            <label class="col-md-3 control-label" for="email">Your E-mail</label>
            <div class="col-md-9">
              <input id="email" name="email" type="text" placeholder="Your email" class="form-control">
            </div>
          </div>

          <!-- Message body -->
          <div class="form-group">
            <label class="col-md-3 control-label" for="message">Your message</label>
            <div class="col-md-9">
              <textarea class="form-control" id="message" name="message" placeholder="Please enter your message here..."...

CSS

body{padding-top:70px;}

JavaScript

// Wait for the HTML document to be loaded completely
$(function() {

  // Retrieve DOM elements and store them
  var contactForm     = $('#contact-form');
  var spinArea        = $('#spin-area'); 
  var formContainer   = $('#form-container');
  var successContainer= $('#success-container');
    
  contactForm.submit(function(e){
    e.preventDefault();
    
    spinArea.spin('large'); // Attach the spinner
    
    // Send a POST AJAX request to the URL of form's action
    $.ajax({
      type: "POST",
      url: contactForm.attr('action'),
      data: contactForm.serialize(),
      dataType: "json"
    })
    .done(function(response) {
      humane.log('Message sent',{ addnCls: 'humane-jackedup-success'});
      successContainer.fadeIn();
      formContainer.slideUp();
    })
    .fail(function () {
      // Sending request to the server has failed
      // We'll show a notification that something went wrong
    })
    .always(function() {
      spinArea.spin(false); // Remove the spinner
    });
  });

});