Musisz wystrzelić zdarzenie na elemencie formularza, a nie na zaznaczeniu jQuery. (W rzeczywistości, nie były nawet wybranie elementu formularza - wewnątrz setTimeout
, this
to globalny obiekt).
Cache odniesienie do postaci (this
) i wywołać jej submit
metody:
$('form').submit(function(event) {
var formId = this.id,
form = this;
mySpecialFunction(formId);
event.preventDefault();
setTimeout(function() {
form.submit();
}, 300);
});
Zauważ, że zastąpiłem twoje nieefektywne połączenie $(this).attr('id')
z this.id
. Zauważ także, że musisz wywołać metodę submit elementu formularza DOM, a nie metodę jQuery, tak aby procedura obsługi zdarzeń jQuery nie została uruchomiona, co spowodowałoby nieskończoną (i całkowicie nieskuteczną) pętlę.
I "Próbowałem tego, ale FireBug mówi, że form.submit() nie jest funkcją. Używam jQuery 1.7.1. – Chris
@Chris Użyłeś dokładnego kodu w mojej odpowiedzi? – lonesomeday
Tak, mogę go uruchomić w JSFiddle, ale nie na mojej stronie. Ładuję jQuery dynamicznie, więc może to być związane z tym. hrmm – Chris