Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Manual jQuery validation call after AJAX call not working?

I have a mixed client-side/server-side validation using jQuery validation plugin. The validation happens on both submit and for some fields on change. The form is being submitted via AJAX. There is another validation going on the application just before updating the DB. If the data changes are not stored to the database due to this validation failing I'm returning the result via JSON to the JS method handling the AJAX form submission. Ideally I would raise an error with custom message passed from the backend to JS by something like $.validator.showErrors(obj); as discussed here Unfortunately the validator.showErrors(...) method is not defined in that context:

$(document).ready(function() {
    $('.form').each(function() {
    $(this).submit(function(e) {
        e.preventDefault();
        if ($.submitForm()) {
    (...)
            $.post(url, $.param(context), function(data) {
                if (!data.success) {
                    $.validator.showErrors(...);
                    //$("#basicdetails").validate();
                }
            }, "json");
        }
        (...)

You can also see that I've tried form revalidation which should also trigger appropriate error (although more of an hack that the real solution).

I would like to retain static client-side validation and after ajax submission to be able to raise any errors that might have occurred on the backend.

Thank you for any help you can provide.

Pawel

like image 334
Pawel Avatar asked Oct 01 '10 15:10

Pawel


1 Answers

.validate() is for setting up validation, to trigger it you should use .valid() like this:

$("#basicdetails").valid();
like image 165
Nick Craver Avatar answered Sep 20 '22 23:09

Nick Craver