I have a form that I am loading via Ajax with jQuery. I am also using jQuery Validation to validate the input. When the user enters valid data into the input field, when the button is clicked, it shows the red error box below the input with no text in it. The input is using bootstrap input group. The form is also using the jQuery validation plugin to submit the form via Ajax. Here is the code I am using to validate:
$(document.body).on('click', '#submit-form-button', function() {
$("#form1").validate({
submitHandler: function(form) {
// Loading State
var submitButton = $('#submit-form-button');
submitButton.button("loading");
// Ajax Submit
$.ajax({
type: "POST",
url: "submit-form.php",
data: {
"input1": $("#form1 #input1").val(),
},
dataType: "json",
success: function(data) {
if (data.response == "success") {
//SHOW SUCCESS
// Reset Form
$("#form1 .form-control")
.val("")
.blur()
.parent()
.removeClass("has-success")
.removeClass("has-error")
.find("label.error")
.remove();
} else {
//SHOW ERROR
}
},
error: function(data) {
console.log(data);
},
complete: function() {
submitButton.button("reset");
}
});
},
rules: {
input1: {
required: true,
email: true
}
},
highlight: function(element, errorClass) {
// Do nothing
},
success: function(element) {
$(element)
.parent()
.removeClass("has-error")
.removeClass("alert")
.removeClass("alert-danger")
.addClass("has-success")
.find("label.error")
.remove();
},
errorPlacement: function(error, element) {
if (element.parent('.input-group').length || element.prop('type') === 'checkbox' || element.prop('type') === 'radio') {
error.insertAfter(element.parent());
} else {
error.insertAfter(element);
}
},
errorElement: "div",
errorClass: "alert alert-danger"
});
});
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.0/jquery.validate.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.0/additional-methods.min.js"></script>
<form id="form1" method="post" action="submit-form.php">
<div>
<label class="control-label sr-only" for="input1">Input 1</label>
<div class="input-group input-group-lg">
<input type="email" class="form-control" id="input1" name="input1" placeholder="Enter Your Email Address">
<span class="input-group-btn">
<button class="btn btn-blue" type="submit" id="submit-form-button" data-loading-text="<i class='fa fa-circle-o-notch fa-spin'></i> SENDING">SEND</button>
</span>
</div>
</div>
</form>