Frage von Tomzilla, 54

JavaScript Formular-Submit verzögerung?

Hallo zusammen

Ich habe eine Website mit einem Formular gemacht. Wenn dieses abgesendet wird, soll zuerst eine "success message" von sweetalert (http://t4t5.github.io/sweetalert/) kommen und nach zb. 3 Sekunden soll das Formular dann endgültig abgesendet werden. Wie kann ich das mit jQuery am besten bewerkstelligen?

Ich habe bereits viel recherchiert, habe aber nichts hinbekommen.

Danke für eure Hilfe.

Gruss Tomzilla

Antwort
von derobert, 5

Was machst du wenn jemand die seite schließt sobald er die Bestätigung sieht?

Sinnvoll und logisch ist es die meldung erst dann anzeigen zu lassen wenn das formular tatsächlich abgesendet wurde.

Lass deine formular Daten per ajax versenden und gib bei erfolg deine meldung aus. So hast du auch die Möglichkeit dem Benutzer eine entsprechende Fehlermeldung anzuzeigen falls etwas schief läuft.

Antwort
von RakonDark, 40

normalerweise in der form über ein onsubmit zu einer funktion

die ruft dann dein alter auf und danach mit

setTimeout(function(){ alert("Hello"); }, 3000);

die sende funktion aufrufen .

Kommentar von Tomzilla ,

Wie rufe ich die Sende-Funktion auf?

Ich glaube ich krieg nicht einmal das mit dem onsubmit hin. Wenn ich in die Funktion nur ein einfaches alert reinpacke, dann kommt nicht einmal das.

function formSubmit(){
setTimeout(function(){
alert("Hello");
}, 3000);
$('form').submit();
}
<form onsubmit="formSubmit()" method="POST">
Kommentar von RakonDark ,

eher so , weil du musst das eigentliche absenden unterbinden mit

und dann senden . das musst du nur noch in dein system giessen .

e.preventDefault();
$(document).ready(function(){
$('#myForm').on('submit', function(e){
e.preventDefault();
this.submit();
});
});
Kommentar von Tomzilla ,

Zum alert komme ich nun mit folgendem Code. 'this.submit();' funktioniert aber irgendwie noch nicht. Das heisst, es wir einfach nicht weitergeleitet.

$('form').on('submit', function(event){
event.preventDefault();
alert('Hello');
setTimeout(function(){
this.submit();
}, 1000);
})
Kommentar von RakonDark ,

das this funktioniert so auch nicht mehr , du musst schon das this übergeben in die funktion , weil innerhalb der funktion ist es ein ganz anderes this

$('form').on('submit', function(event){
event.preventDefault();
alert('Hello');
var a = this ;
setTimeout(function(a){
a.submit();
}, 1000);
})
Kommentar von Tomzilla ,

Ich danke dir für deine Mühe, aber es funktioniert leider noch immer nicht.

$('form').on('submit', function(event){
event.preventDefault();
alert('Hello');
var form = this;
setTimeout(function(form){
form.submit();
/*$(this).submit();*/
}, 2000);
})
Kommentar von RakonDark ,

lad das gesamte doch mal auf https://jsfiddle.net/ hoch . du kannst ja auch das this ganz weg lassen und entsprechend $('elementid') von der Form nehmen .

Keine passende Antwort gefunden?

Fragen Sie die Community