Javascript-Event bei Absenden eines Kontaktformulars

  • Hallo liebe Experten,


    ich habe ein kleines Problem, dass ich durch Googeln nicht lösen konnte.

    Ich habe auf meiner Website ein Kontaktformular eingebaut. Die Funktionalität über PHP mit der mail()-Funktion klappt reibungslos. Das habe ich bereits getestet.

    Als kleines besonderes Etwas (bin gerade erst dabei Javascript zu lernen, ich habe nach HTML und CSS erst PHP gemacht), hatte ich vor, ein window.alert auszugeben, wenn das Formular erfolgreich versendet wurde.

    Leider funktioniert das in der Praxis nicht so ie gewollt. Ich habe einige Formularfelder, die ich in HTML mit required gekennzeichnet habe.

    Kurz um, wenn ich nicht alle Pflichtfelder ausfülle, oder sogar ein leeres Formular absende, erscheint das window.alert, aber erst danach kommt die Prüfung, ob Pflichtfelder ausgefüllt wurden.

    Das ist natürlich ungünstig. Das bedeutet, mein Anliegen ist, das so zu timen, dass die Prüfung, ob alle Pflichtfelder ausgefüllt sind, vor dem window.alert kommen.

    Wie kann ich das umsetzen?

    Vielen Dank vorab.

    Anbei mein Quellcode:

    Wer es selbst testen möchte:


    https://moselbank-simulation.de/kontakt.php

  • Du darfst die Ausgabe erst machen, wenn die Mail raus ist, also ist dein Eventlistener falsch.

    Die Funktionalität über PHP mit der mail()-Funktion klappt reibungslos.

    Du solltest auf die Mail-Funktion von PHP verzichten und statt dessen eine fertige Mailerklasse w.z.B. den phpMailer verwenden.

  • Mal abgesehen davon dass die Meldung ohnehin Unsinn ist: warum verwendest du einen click-Handler wenn du eigentlich auf submit reagieren möchtest?


    Außerdem: dein HTML ist kaputt: es fehlt was, außerdem dürfen IDs nicht mehrfach verwendet werden und "rot" ist ein völlig falscher Name für eine ID (für eine Klasse auch) - IDs/Klassen sollten niemals nach dem Aussehen eines Elementes benannt werden.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!