schoschamu: Javascript Formvariablen undefined nach Befuellung aus $_Post

Hallo,

ich habe mir eine kleine Formularpruefung per JS gebaut, die im wesentlichen vor dem submit pruefen soll, ob ein Formularfeld ausgefuellt wurde oder nicht.

Dies klappt auch im ersten Schritt ganz wunderbar.

Nun hab ich in einem zweiten Schritt nach der Pruefung dem User die Moeglichkeit eingebaut, seine eingegebenen Daten noch einmal zu pruefen, bevor diese endlich in die DB geschrieben werden. Findet der User einen Fehler, so klickt er auf einen Button, der ihn dann auf die erste Seite (mit dem urspruenglichen) Formular zurueck bringt. In diesem Formular werden nun die Felder mit den eingegebenen Daten aus der $_POST[...] wieder befuellt.

Hier kommt nun mein Problem:
Bei einer erneuten Pruefung vor dem Absenden sind saemtliche Felder die ich mit dem eben noch wunderbar funzenden JS-Script pruefen moechte ploetzlich 'undefined'.

Meine Frage lautet nun: wie kann das sein?
und noch wichtiger: wie kann ich das fixen?

Das betroffene Template ist dieses:
intensify.de/js-fehler.php

Dort ist auch der verwendete PHP-Code zu sehen.

Danke im Voraus fuer Eure Hilfe!
schoscha

  1. hi,

    Bei einer erneuten Pruefung vor dem Absenden sind saemtliche Felder die ich mit dem eben noch wunderbar funzenden JS-Script pruefen moechte ploetzlich 'undefined'.

    Meine Frage lautet nun: wie kann das sein?

    Welche Fehlermeldungen bekommst du in der Javascript-Konsole?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo.

      Die erste Fehlermeldung der Konsole ist:
      document.forms.newclientinfo.ua_emailaddress.focus is not a function

      Ich habe dann mal ein paar Alerts in die anderen JS-Pruefungen eingebaut, die jeweils nur die values ausgeben (z.B. document.forms.newclientinfo.ua_emailaddress.value) und dabei gemerkt, ploetzlich alle 'undefined' sind, nachdem ich von Schritt zwei zurueck auf das Formular komme.

      Viele Gruesse
      schoscha

      1. hi,

        Ich habe dann mal ein paar Alerts in die anderen JS-Pruefungen eingebaut, die jeweils nur die values ausgeben (z.B. document.forms.newclientinfo.ua_emailaddress.value) und dabei gemerkt, ploetzlich alle 'undefined' sind, nachdem ich von Schritt zwei zurueck auf das Formular komme.

        Das liegt daran, dass du die Feldnamen jetzt alle doppelt im Dokument hast - einmal die normalen Felder, und dann noch mal hidden-Felder gleichen namens.

        Und damit liefert document.forms.newclientinfo.ua_emailaddress jetzt keine Referenz auf das Eingabefeld mehr (weil es "das" Feld jetzt gar nicht mehr gibt, sind ja jetzt mehrere), sondern eine NodeList zurück, auf die du mit einem nummerischen Index zugreifen müsstest - document.forms.newclientinfo.ua_emailaddress[0].value.
        Das wiederum funktioniert dann aber bei Erstaufruf der Seite nicht, weil da die Namen eindeutig sind, und somit keine NodeLists erstellt werden.
        Vermutlich wäre es also clientseitig einfacher zu handhaben, wenn du den hidden-Feldern anderen Namen gibst.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Super, das hab ich nicht mehr gesehen, aber war genau der Fehler.

          Vielen Dank und schoenes Wochenende noch!
          Gruss
          schoscha