Il lavoro del submitHandler è quello di inviare il modulo, non registrare una forma submit gestore di eventi.
Il submitHandler viene chiamato quando viene attivato l'evento di invio formm, nel tuo caso invece di inviare il modulo si registrava un gestore di invio in modo tale che quando l'evento di invio del modulo viene attivato per la prima volta il modulo non viene inviato. quando viene attivato per la seconda volta, l'evento di invio viene elaborato dal validatore, quindi viene attivato l'handler registrato che attiva la richiesta Ajax.
Nella submitHandler non resta che ha inviato la richiesta Ajax non c'è bisogno di registrare il gestore di eventi
$("#add-form").validate({
submitHandler: function (form) {
// setup some local variables
var $form = $(form);
// let's select and cache all the fields
var $inputs = $form.find("input, select, button, textarea");
// serialize the data in the form
var serializedData = $form.serialize();
// let's disable the inputs for the duration of the ajax request
$inputs.prop("disabled", true);
// fire off the request to /form.php
request = $.ajax({
url: "forms.php",
type: "post",
data: serializedData
});
// callback handler that will be called on success
request.done(function (response, textStatus, jqXHR) {
// log a message to the console
console.log("Hooray, it worked!");
alert("success awesome");
$('#add--response').html('<div class="alert alert-success"><button type="button" class="close" data-dismiss="alert">×</button><strong>Well done!</strong> You successfully read this important alert message.</div>');
});
// callback handler that will be called on failure
request.fail(function (jqXHR, textStatus, errorThrown) {
// log the error to the console
console.error(
"The following error occured: " + textStatus, errorThrown);
});
// callback handler that will be called regardless
// if the request failed or succeeded
request.always(function() {
// reenable the inputs
$inputs.prop("disabled", false);
});
}
});
fonte
2013-08-16 04:17:09
Cosa si suppone essere '** js da un'altra pagina **? Si prega di mostrare abbastanza codice per fare una dimostrazione concisa del problema. Il tuo OP non dovrebbe fare affidamento sui link esterni per mostrare tutto il codice pertinente. Il plugin jQuery Validate richiede solo _one_ clic, a meno che non abbiate erroneamente racchiuso ".validate()" all'interno di un gestore "click" o "submit'. E nel tuo caso hai involontariamente avvolto un gestore di 'submit' all'interno del predefinito' submitHandler' del plugin. Poiché la funzione di richiamo 'submitHandler' del plugin cattura già l'evento di invio, il tuo gestore di' submit' incluso è ridondante. – Sparky