Unerwarteter Return in JS-Funktion

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Unerwarteter Return in JS-Funktion

    Hallo!

    Ich möchte in einem Formular vor dem Absenden die eingegebenen Werte prüfen. Dazu habe ich dem Formular das Attribut onsubmit="return checkForm();" zugewiesen, so dass dieses nur abgeschickt wird, wenn die JS-Funktion "true" zurückgibt.
    Das Problem ist nun aber, dass in der Funktion seltsamerweise ohne eine entsprechende Anweisung eine Rückgabe ("true") erfolgt.
    Code:
    var form = document.getElementById(form_id);
        var values = new Object();
        for (var n=0; form.elements.length-1; n++) {
            if (form.elements[n].name != "") {
                values[form.elements[n].name] = form.elements[n].value;
            }
        }
    return false;
    Verursacht wird diese Rückgabe scheinbar durch die If-Abfrage, da ohne diese nur die in der letzten Zeile explizit angegebene Rückgabe erfolgt.

    Kann sich vielleicht jemand erklären, woran dies liegt?

    MfG
    Pascal
    Interessantes aus den Themenbereichen Computer, Internet und Programmierung unter
    http://www.it-blog.net

  • #2
    Hallo Pascal,

    hast du dir denn die Fehlerkonsole gar nicht angesehen? In deiner Schleife läuft n immer höher, weil die Bedingung falsch formuliert ist. Dadurch erreichst du mit n einen undefinierten Index und beim Zugriff auf name und value wird eine Exception geworfen. Da die Funktion somit nicht dazu kommt, false zurückzugeben, wird das Formular trotzdem abgeschickt.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Zitat von pascaluhlmann Beitrag anzeigen
      Das Problem ist nun aber, dass in der Funktion seltsamerweise ohne eine entsprechende Anweisung eine Rückgabe ("true") erfolgt.
      Und das hast du überprüft, oder vermutest du es nur? Ich vermute letzteres.

      Ein Fehler bei der Abarbeitung deiner Funktion würde nämlich mit dem Abbruch dieser ebenfalls dazu führen, dass die "normale" Aktion, nämlich absenden des Formulars, durchgeführt wird.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        @AmicaNoctis: Oh wie peinlich, das hätte mir ja auch selbst auffallen können. Nachdem ich dies nun korrigiert habe, funktioniert es jetzt.

        @wahsaga: Deine Vermutung scheint wohl richtig gewesen zu sein, da nach Behebung des Fehlers bei Formulierung der Schleifenbedingung alles korrekt funktioniert.

        Danke für eure Hilfe!
        Interessantes aus den Themenbereichen Computer, Internet und Programmierung unter
        http://www.it-blog.net

        Kommentar

        Lädt...
        X