jQuery Form Validation before Ajax submit
ajax, jquery, jquery-validate, validation
Solution
You could use the `submitHandler` option. Basically put the `$.ajax` call inside this handler, i.e. invert it with the validation setup logic.
$('#form').validate({
... your validation rules come here,
submitHandler: function(form) {
$.ajax({
url: form.action,
type: form.method,
data: $(form).serialize(),
success: function(response) {
$('#answers').html(response);
}
});
}
});
The `jQuery.validate` plugin will invoke the submit handler if the validation has passed.
Problem
JavaScript bit: ``` $(document).ready(function() { $('#form').submit(function(e) { e.preventDefault(); var $form = $(this); // check if the input is valid if(! $form.valid()) return false; $.ajax( { type:'POST', url:'add.php', data:$('#form').serialize(), success:function(response) { $("#answers").html(response); } }); }) }); ``` HTML bit: ``` <input type="text" name="answer[1]" class="required" /> <input type="text" name="answer[2]" class="required" /> ``` So this is the code I am trying to use. The idea is to get all my inputs validated before I send my form with Ajax. I've tried numerous versions of this now but every time I end up with submitting even though the form is not entirely filled out. All my inputs are of the "required" class. Can anyone see what I am doing wrong? Also, I depend on class-based requirements as my input names are generated with php so I can never be sure what name[id] or input types I get. I show/hide questions as I go through it in "pages". ``` <input type="button" id="next" onClick="toggleVisibility('form3')" class="next-btn"/> ``` JS: ``` function toggleVisibility(newSection) { $(".section").not("#" + newSection).hide(); $("#" + newSection).show(); } ```