PreventDefault submit funktioniert nicht

11/13/2018 22:45 lnqlorlouz#1
Hi,

ich habe ein Kontaktformular:
HTML Code:
<form class="form-horizontal" id="ajax-contact" method="post" role="form" action="mailer.php">
...abgekürzt
<input id="submit" name="submit" type="submit" value="Absenden" class="btn btn-submit btn-lg btn-block">
</form>
Welches ich per JavaScript/Ajax wegschicke:
Code:
 (() => {
      const form = document.getElementById("ajax-contact");
      const result = document.getElementById("contactResult");

      // Set up an event listener for the contact form
      $(form).submit((event) => {
        // Stop the browser from submitting the form
        event.preventDefault();
        // Serialize the form data
        const formData = $(form).serialize();
        // Submit the form using AJAX
        $.ajax({
          type: 'POST',
          url: $(form).attr('action'),
          data: formData
        })
          .done((response) => {
            console.log("Kontaktformular wurde erfolgreich weggeschickt!");
            // Clear the form
            const name = document.getElementById("name");
            const email = document.getElementById("email");
            const message = document.getElementById("message");
            const elements = [name, email, message];
            elements.forEach((el) => {
              el.value = "";
            });
            // Give user feedback
            result.style.display = "";
            result.innerText = response;
            setTimeout(() => {
              $("#contactResult").fadeOut();
            }, 3000);
          })
          .fail((data) => {
            console.log(`Kontaktformular error: ${data}`);
            // Give user feedback
            result.classList.replace("alert-success", "alert-danger");
            result.style.display = "";
            result.innerText = data;
            setTimeout(() => {
              $("#contactResult").fadeOut();
            }, 3000);
          });
      });
    });
Ich denke wie meine mailer.php aussieht ist egal. Auf jeden Fall lande ich später auf der.
Ich vermute den Fehler beim $(form).submit()...$(form)[0] bringt auch nichts.

Hat einer eine Idee oder fällt einem etwas auf?
Es kommt auf das $(form).submit() und auf das event.preventDefault() drauf an.
Ein
Code:
setTimeout(() => {

}, 10000);
hat leider auch nichts gebracht...sobald ich auf Senden klicke, ist er auf der mailer.php.
Debugger kann ich leider nicht setzen, um zu sehen was event ist.

Grüße
Benny
11/14/2018 12:37 type.#2
Dein IIFE selbst wird nicht gecallt. Du hast zwar die Function, aber diese wird nie ausgeführt.
Einfach in der letzten Zeilte }); durch })(); ersetzen und schon sollte es funktionieren. c:

Edit: [Only registered and activated users can see links. Click Here To Register...]
11/14/2018 18:22 lnqlorlouz#3
Quote:
Originally Posted by type. View Post
Dein IIFE selbst wird nicht gecallt. Du hast zwar die Function, aber diese wird nie ausgeführt.
Einfach in der letzten Zeilte }); durch })(); ersetzen und schon sollte es funktionieren. c:

Edit: [Only registered and activated users can see links. Click Here To Register...]
Ups, vielen dank! Das hab ich total übersehen.