PHP per Post abgesendete Form, Bug (siehe Thread)
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfangen
absenden
brauch
button
code
datei
effekt
erfolgreich ausgabe
erfolgreich meldung
erstellt code
fertig laden
form
formular
geschrieben code
lade
problem
sekunde
type
url
zweig
-
Hallo Community,
ich habe einen Kontaktbereich erstellt.
<form id="contactform" method="post" action="<?php echo $_SERVER['PHP_SELF']."?s=contact"; ?>"> etc. <input type="submit" name="submit" class="btn btn-primary pull-right" id="btnContactUs" value="Absenden" /> </form>
Diese Form sende ich per "Post" an die selbe Datei und werte dieses Formular dann auch aus bzw. verarbeite es entsprechend.
Da mein E-Mail absenden circa 1-3 Sekunden dauert (smtp google), gibt es intelligente User die einfach auf den Absenden-Button hämmern werden. Dadurch würde das Formular zick mal abgesendet werden und es würde vor allem nie fertig laden da es immer wieder neu angestoßen wird. Also habe ich folgenden Jquery-Fixx geschrieben:
var sent = true; $("#contactform").submit(function() { if(sent){ $("#btnContactUs").attr("value", "Lade..."); sent = false; }else{ $("#btnContactUs").attr({ "type": "button", "value": "Lade..." }); } });
Jetzt steht zumindest mal "Lade..." im Button, bis das Formular durch ist.
Zudem habe ich natürlich den type geändert auf button, damit der User das Formular nicht erneut anstoßen kann.
Meine erfolgreich Meldung kommt aber nun über PHP, wenn der User jetzt nur einmal auf "Absenden" klickt kommt "Lade..." und kurz danach eine "Erfolgreich! text..." Meldung, zur Bestätigung.
Jetzt gibt es aber noch die "instinktiven-Doppelklicker". Wenn der User nun auch noch auf den Lade-Button hämmert oder eben nur einmal draufklickt - kommt keine Erfolgreich-Ausgabe!
Dennoch wurde das Formular korrekt abgesendet und ich bekomme eben ein einziges Mal die E-Mail.
Wie könnte ich nun dieses Problem lösen? Mir fällt ehrlich gesagt gerade nichts ein und überlege mir gerade ob man überhaupt jede "Dummheit" abfangen muss.
Vll. fällt einem von Euch etwas intelligentes ein, wie ich das lösen könnte?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wenn du das mit jQuery lösen willst, könntest du doch den Button deaktivieren:
$("#btnContactUs").attr("disabled", "disabled");
-
c143 schrieb:
Wenn du das mit jQuery lösen willst, könntest du doch den Button deaktivieren:
$("#btnContactUs").attr("disabled", "disabled");
Damn, hast natürlich Recht! Wieso bin ich ned glei draufgekommen... . Da brauch ich den type ned changen sondern einfach den button deaktivieren... . Danke dir!
#Edit:
Ist leider nicht die Lösung meines Problems, der Effekt ist derselbe wie bei meinem type-change.
-> Ich erhalte keine Erfolgreich-Meldung bei erneutem Klick drauf... .
Wenn ich es so schreibe:
var sent = true; $("#contactform").submit(function( event ) { if(sent){ $("#btnContactUs").attr({ "disabled": "disabled", "value": "Lade..." }); sent = false; } });
also ohne else-zweig wird das Formular erst gar nicht mehr abgesendet.
Beitrag zuletzt geändert: 15.6.2014 15:17:37 von master4860 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage