Avere problemi a inviare moduli e chiamare gli eventi in codati dopo l'evento asincrono
-
11-12-2019 - |
Domanda
Ho questo lavoro su Setup locale (con JQuery.1.6.4) ma non funziona su Dev Setup (JQuery.1.3.2).
Considera il seguente modulo -
<form onsubmit="return validateMacros();">
<input id="formsubmitbutton" type="submit" name="formsubmitbutton" value="Submit" />
</form>
.
Nota la chiamata validateMacros();
sopra.
e il seguente JavaScript -
jQuery(document).ready(function()
{
$("input#formsubmitbutton").click(preValidateUrls);
function preValidateUrls(evt)
{
evt.preventDefault(); //to prevent form submission until completion of async event
$.ajax({
...
...
success: function(res)
{
$("form#frmBanners").submit(); //This submits the form in case of both versions but in 1.3.2 case, the validateMacros() function is not called
}
});
}
});
function validateMacros()
{
//some logic here - which is not executing in case of jquery.1.3.2
}
.
Quando viene caricato jQuery.1.6.4, la funzione validateMacros()
viene eseguita dopo il completamento dell'esecuzione di preValidateUrls()
, che è desiderato.
Ma quando JQuery.1.3.2 è caricato, validateMacros()
non esegue affatto e il modulo si è appena inviato.
Come faccio a farlo lavorare su entrambe le versioni.Cosa sto facendo male?
Soluzione
vai inutile!
$('form#frmBanners').on('submit', validateMacros);
.
Cosa stiamo facendo qui è Sottoscrizione La funzione per l'evento submit
del modulo, dopo averlo dato un ID (ho appena notato che hai usato frmBanners
come esempio).Unbistruutorio significa che non stai mettendo nessun JavaScript nel tuo HTML, che è lo scopo principale delle biblioteche come JQuery.Quindi, ovunque nel tuo file JavaScript esterno, includi la linea che ho fornito sopra.Ogni volta che il modulo è inviato e non appena quando si fa clic sul pulsante di invio, la funzione verrà chiamata.
Quindi, quando si chiama $("form#frmBanners").submit();
, viene licenziato l'evento e viene chiamata la funzione.Questo è un passo più vicino alla seguente convention per quanto riguarda la cottura di questi tipi di eventi andare.