OnSubmit bzw. Onclick-Event verhindert die Übertragung einer PHP Variable?

suntrop

Erfahrenes Mitglied
Hallo,

ich habe ein Formular in dessen Form-Tag ein OnSubmit-Event eingetragen ist, das in Google Analytics mitzählt wie oft das Formular gesendet wurde.
Kurzfassung des langen Textes am Ende :-)

Da jedoch "viele" das Einfach-Klick-Prinzip für Links oder in diesem Falle von Buttons nicht kennen und es von Windows gewohnt sind überall doppelt zu klicken, habe ich (meine Vermutung) keine korrekten Zahlen. Denn der Zähler des Buttons ist um 25% höher als der Zähler auf der Danke-Seite.

Kurze Zwischenfrage: Ist das OnSubmit-Event identisch mit einem OnClick-Event auf dem Submit-Button? Oder wo liegt der Unterschied, weshalb gibt es beides?

Aus diesem Grunde wollte ich dem Submit-Button folgenden Code hinzufügen:
Code:
onclick="this.value='Formular gesendet'; this.disabled='disabled';"
Soll erstens zeigen, dass es gesendet ist und zweitens ein zweiten Klick verhindern.

Jedoch habe ich jetzt das Problem, dass anscheinend der Inhalt aus dem Submit-Button nicht mehr gesendet wird (via method="post").
Mit PHP prüfe ich, ob die Pflichtfelder gesetzt (isset) sind. Um beim ersten Aufruf keine Fehlermeldung zu zeigen steht in meinem Code ganz oben in etwa folgendes…
if (isset($_POST['name_submitbutton']))
{ prüfe alle Felder }
else
{ Nutzer hat Formular noch nicht gesendet }

Das onclick="this.disable='disabled';" scheint jedoch die Variable für $_POST['name_submitbutton'] nicht zu senden, sodass das Programm nicht sieht, ob der Nutzer versucht hat das Formular zu senden.

Was kann ich ändern, damit der Inhalt des Buttons übertragen wird?

Sorry für den langen Text und danke das du bis hier her gelesen hast ;-) …weiß nicht wie ich es kürzer und dennoch präzise hätten sagen können.

Ich würde mich über ein paar Tipp sehr freuen.

Grüße
suntrop

Hier die Kurzfassung des Problems:
Formular mit onclick=this.disabled=disabled auf Submit-Button -> Inhalt(name=name_submitbutton) des Buttons in PHP nicht verfügbar, da isset('$_POST['name_submitbutton']) immer leer
 
Du könntest den button von type="submit" auf type="button" ändern und in das form mit document.getElementById("form id").submit() abschicken.
 
Dank für deine schnelle Antwort.
Du könntest den button von type="submit" auf type="button" ändern und in das form mit document.getElementById("form id").submit() abschicken.
Sorry, aber das verstehe ich nicht so richtig.

Wenn ich den Button so:
<button name="button_name">Absenden</button>
definiere, dann kann ich doch nicht mehr über isset($_POST['button_name']) prüfen ob der Button geklickt wurde, oder doch?

Ist vielleicht jetzt keine JS, sondern eine PHP Frage, aber wollte es vorhin nicht im PHP-Bereich posten, denn mein PHP-Code funktioniert, nur die Integration des JS-Codes gelingt mir noch nicht ganz.

Kannst du das ein bisschen genauer erläutern, wie du das meinst?

Grüße
suntrop
 
Was er meint das Du das Formular nicht über den gewohnten Submit Button absendest , sondern einen normalen button setzt und den Event onSubmit() über javaScript auslöst bzw das Formular damit die Anweisung gibst sich an das entsprechende Ziel zu senden.

Soll heissen
Code:
   document.getElementById('absendeknopfid').onClick = function () { formname.submit() }
dann wird das entsprechende Formular gesendet. Aber den Inhalt vom Button wirst dann nicht mehr über PHP auslesen können denk ich Versuch macht klug.

Wenn Du weisst es wurde bereits 1 mal gesendet kannst Du dann Du das Script dazu anweisen ein weiteres senden komplett zu verhindern.

Code:
  formname.onsubmit = function () { return false;}

Eine Alternative seh ich darin , einfach noch ein verstecktes Input Feld ins Formular mit einzuhängen und da den Wert des Buttons reinzuschreiben denn dieser wird dann mit gesendet.

Oder :
Der onClick Event wird lediglich dann ausgelöst wenn du irgendwo hinklickst also maustaste gedrückt + maustaste los gelassen. Kann sein das sich der onSubmit Event schon auslöst wenn du nur die maus drückst auf den Button somit kommt nie ein click zusammen und das formular ist weg eh der Click Event greifen kann.
Somit kannst Du auch mal probieren ob der onMousedown Event funktioniert auf den Submitbutton.

Alles in allen ist dies dennoch sehr unsicher , macht der User JavaScript aus dann kann er senden wie er mag ;)
 
Zuletzt bearbeitet:
Danke für die Erklärung.

Ich denke ich werde dann doch lieber mein PHP-Code anpassen. Das finde ich sicherer und ist für mich auch einfacher :-)

Grüße
suntrop
 

Neue Beiträge

Zurück