Ich habe dieses HTML-Formular mit einer ID und ich habe diese ID an die Submit-Funktion gebunden. Was ich möchte, ist, wenn ein Benutzer auf Senden klickt, erscheint ein Popup wie eine modale Box, die ihm dankt. Und erst nachdem sie vom Bildschirm geklickt haben oder wenn sich die Modalbox schließt, möchte ich, dass das Formular gesendet und die Seite aktualisiert wird.
Aber so wie ich es jetzt habe, scheint es sich zu erneuern, egal was passiert. Ich verwende das ausgefallene Popup-Plugin für die Modalbox.
Wie Sie sehen können, versuche ich ihm zu sagen, dass es nur beim Schließen wahr zurückgeben soll, aber es funktioniert nicht wirklich.
Irgendwelche Ideen?
Das ist eine sehr gefährliche Funktionalität. Wenn ein Benutzer ein Formular absendet und eine Dankesnachricht sieht, würde er/sie erwarten, dass die Daten bereits übermittelt wurden, und kann das Fenster oder die Registerkarte einfach schließen, ohne tatsächlich etwas übermittelt zu haben. Ich rate Ihnen dringend, zuerst die Daten zu übermitteln und dann eine entsprechende Nachricht (Danke für Erfolg oder Fehler für Fehler) basierend auf der zurückgegebenen Antwort anzuzeigen.
– Amustill
23. Mai 2011 um 21:17 Uhr
Naftali
Versuche dies:
jQuery("#form").submit(function(e) {
var self = this;
e.preventDefault();
jQuery.fancybox('<div class="box">Some amazing wonderful content</div>', {
'onClosed' : function() {
self.submit();
}
});
return false; //is superfluous, but I put it here as a fallback
});
Javascript ist asynchron, sodass Sie die Rückgabeanweisung nicht verzögern können.
AKTUALISIEREN
Damit der obige Code funktioniert, ändern Sie die name Ihrer Submit-Schaltfläche an etwas anderes, zum Beispiel:
@lonesomeday, ich habe es normalerweise nur als Fallback für die preventdefault
– Naftali
23. Mai 2011 um 21:15 Uhr
@lonesomeday – genau das wollte ich sagen. (+1 von mir auch Neal)
– karim79
23. Mai 2011 um 21:15 Uhr
@Neal Aber jQuery macht das unnötig, und Sie verhindern die Ausbreitung, wo Sie nicht wirklich wollen …
– einsamer Tag
23. Mai 2011 um 21:17 Uhr
@lonesomeday, ich habe in meiner Antwort einen Kommentar dazu hinzugefügt
– Naftali
23. Mai 2011 um 21:17 Uhr
@amustill, self.subit() ruft die native DOM-Submit-Aktion auf. Wenn ich es tat $(self).submit() dann hätte ich Probleme mit einer Endlosschleife
– Naftali
23. Mai 2011 um 21:21 Uhr
(Antwort auf Ricks Frage unter Neals Antwort: “irgendein anderer Weg? Weil ich keinen direkten Zugriff auf dieses HTML habe”)
Wenn Sie aus irgendeinem Grund eine Submit-Schaltfläche mit ID=”submit” benötigen und die form.submit-Methode nicht verwenden können (weil sie mit “input[type=submit]#submit”-Button) können Sie dies tun:
$('<form>')[0].submit.call(form); //jQuery
//OR:
document.createElement('form').submit.call(form); //pure HTML w/o any framework
dh erstellen Sie ein neues leeres Formular und verwenden Sie seine Submit-Methode, um es im Bereich Ihres eigenen Formulars aufzurufen
11751000cookie-checkAktion vor dem Absenden des Formulars ausführen?yes
Das ist eine sehr gefährliche Funktionalität. Wenn ein Benutzer ein Formular absendet und eine Dankesnachricht sieht, würde er/sie erwarten, dass die Daten bereits übermittelt wurden, und kann das Fenster oder die Registerkarte einfach schließen, ohne tatsächlich etwas übermittelt zu haben. Ich rate Ihnen dringend, zuerst die Daten zu übermitteln und dann eine entsprechende Nachricht (Danke für Erfolg oder Fehler für Fehler) basierend auf der zurückgegebenen Antwort anzuzeigen.
– Amustill
23. Mai 2011 um 21:17 Uhr