Hey Jorn,
I believe I have found a bug in jquery.validate 1.2.
I use a few "remote"s to make sure a username or an email is not
taken. Sometimes I would have some errors in my form and would click
the submit button a few times to validate fields - and then would fix
the fields containing errors, and then try to submit the form, but it
would simply not submit. So after a lot of trial and error I decided
to add the following line:

alert(validator.pendingRequest);

in this block of jquery.Validate code:
if ( validator.pendingRequest ) {
alert(validator.pendingRequest); //The line I added
validator.formSubmitted = true;
return false;
}

In one instance I got -3 as a result - meaning that requests
inexistent request were cancelled, lowering validator.pendingRequest
below zero.

Solution:
Replace the existing stopRequest function

stopRequest: function(element, valid) {
                        this.pendingRequest--;
                        delete this.pending[element.name];
                        if ( valid && this.pendingRequest == 0 && 
this.formSubmitted &&
this.form() ) {
                                jQuery(this.currentForm).submit();
                        }
},

With this one

stopRequest: function(element, valid) {
                        if(this.pendingRequest>0){ //NOTICE THIS
                        this.pendingRequest--;
                        } //NOTICE THIS
                        delete this.pending[element.name];
                        if ( valid && this.pendingRequest == 0 && 
this.formSubmitted &&
this.form() ) {
                                jQuery(this.currentForm).submit();
                        }
},

so pendingRequest is only lowered if it is greater than 0 - resulting
in the form actually being submitted when all fields are correct.

Hope I could help and things would be fixed in the next release.
Thanks,
Yuval Karmi

Reply via email to