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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top