Funktion wird doppelt ausgeführt


Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Sprint

Erfahrenes Mitglied
Hallo zusammen,

ich benutze hier eine Routine zum Verarbeiten eines Formulars, die ich schon mehrfach verwendet habe. Nur wird sie dieses Mal doppelt durchlaufen, so daß der Datensatz zwei Mal angelegt wird.

Das Formular wird so abgesendet:
HTML:
<button class="button primary" id="eukunde_weiter" name="weiter" onclick="$('#eukunde-form').submit();">eintragen</button>

Und hier wird es verarbeitet:
Javascript:
$(document).ready(function () {
alert('x');
    $('#eukunde-form').submit(function () {

        hasError = false;
// Feldüberprüfung hier weggelassen
        if (hasError) {
            $('#daten_error_box').show();
        }
        else {
            $.ajax({
                type: 'POST',
                url: 'putkdneu.php',
                cache: false,
                data: $("#eukunde-form").serialize(),
                success: function (data) {
alert(data);
                    if (data.substr(0,2) != 'ok'){
                        var rueckgabe = JSON.parse(data);
                        $.each( rueckgabe, function( key, val ) {
                            $('#'+key).addClass('error_class');
                        });
                    }else{
                        var neukdnr = data.substr(3);
alert(neukdnr);
                        $('#uid_error_box').hide();
                        $('#daten_error_box').hide();
                        $('#kdnrNeu').html(neukdnr);
                        $('#daten_success_box').show();
                    }
                }
            });
        }
        return false;
    });
});

Wenn das Formular abgesendet wird, wird als erstes zwei Mal 'x' ausgegeben, die Funktion wird also zwei mal aufgerufen. Erst dann werden 'data' und 'neukdnr' zwei Mal in korrekter Reihenfolge ausgegeben. Also z.B. ok.1 - 1 - ok.2 - 2

Wie gesagt, ich habe diese Verarbeitung seit Jahren in Verwendung und bis jetzt wurde ein Datensatz immer nur ein Mal angelegt. Hat jemand eine Ahnung, woran das liegen könnte?

Danke schon mal im Voraus fürs Gedanken machen.
Sprint
 

ComFreek

Mod | @comfreek
Moderator
Füge dem Button mal ein `type="button"` Attribut hinzu. Ich erinnere mich dunkel daran, dass ein Formular mit nur einem einzigen Button mit undeklariertem type automatisch diesen Button als Submitbutton hernimmt.

Falls das nicht klappt, probiere das onclick-Attribut vom Button zu entfernen und den Handler so aufzusetzen:
Javascript:
$('#eukunde_weiter').click(function(event) {
  $('#eukunde-form').submit();
  return false; // see https://stackoverflow.com/a/1357151/603003 what this does
});
 

Sprint

Erfahrenes Mitglied
Das type="button" Attribut war es. Jetzt funktioniert es wieder wie es soll.
Vielen Dank für die Hilfe!
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…