È necessario attivare l'evento sull'elemento modulo stesso, non su una selezione jQuery. (In realtà, si erano neanche selezionare l'elemento di forma - all'interno setTimeout
, this
è l'oggetto globale.)
Cache riferimento alla forma (this
) e chiamare il metodo submit
:
$('form').submit(function(event) {
var formId = this.id,
form = this;
mySpecialFunction(formId);
event.preventDefault();
setTimeout(function() {
form.submit();
}, 300);
});
Nota che ho anche sostituito la tua inefficiente chiamata $(this).attr('id')
con this.id
. Si noti inoltre che è necessario chiamare il metodo di invio dell'elemento del modulo DOM, non il metodo jQuery, in modo che il gestore di eventi jQuery non sia attivato, il che causerebbe un ciclo infinito (e totalmente inefficace).
I ho provato questo, ma FireBug dice che form.submit() non è una funzione. Sto usando jQuery 1.7.1. – Chris
@Chris Hai usato il codice esatto nella mia risposta? – lonesomeday
Ya, posso farlo funzionare su JSFiddle, ma non sulla mia pagina. Sto caricando jQuery in modo dinamico, quindi potrebbe essere correlato a questo. hrmm – Chris