Franzi: Formular auf geändert überprüfen

Hallo allerseits,

Es gibt ja den reset-Button, der alle Eingabefelder in einem Formular automatisch auf die ursprünglichen Werte zurücksetzt.

Ich habe ein Formular mit verschiedenen Eingabefeldern, und möchte,  wenn jemand einen normalen Button drückt, dass dann überprüft wird, ob sich irgend ein Wert geändert hat.

Ich könnte natürlich das onChange-Event benutzen, aber dann muss ich das für jedes Eingabefeld benutzen. Außerdem wenn ich dann einen Wert in dem Formular ändere, und ihn wieder zurückändere, dann habe ich zwei onChange-Events, aber kein geändertes Formular.

Gibt es eine Möglichkeit, das Formular auf Button-klick mit den ursprünglichen Werten zu vergleichen, auf welche sie der reset-Button wieder zurücksetzen würde?

Danke schon im Voraus
Franziska

  1. Hallo Franziska,

    eine Standardfunktion gibt's da nicht. Es lässt sich aber schnell eine basteln. Statt des Submit-buttonsn einen normalen Button setzen und per onClick eine Funktion starten. Diese kann die Werte der Felder abfragen und mit den von Dir ursprünglich gesetzten (müssen in Funktion nochmal drin stehen) verglichen werden. Wenn alles geändert wurde, lässt sich mit submit() das Absenden auslösen.

    Hab den Link nicht parat, zum Überprüfen von Formularen ist aber glaub ich ein Beispiel in Selfhtml (bei HTML->Formulare)

    Grüße aus Würzburg
    Julian

    1. Hallo Julian

      eine Standardfunktion gibt's da nicht.

      Schade

      Diese kann die Werte der Felder abfragen und mit den von Dir ursprünglich gesetzten (müssen in Funktion nochmal drin stehen) ...

      Nur wie komme ich an die ursprünglich gesetzten Werte ran?

      mfG
      Franziska

      1. Hallo Franziska,

        Diese kann die Werte der Felder abfragen und mit den von Dir ursprünglich gesetzten (müssen in Funktion nochmal drin stehen) ...

        Nur wie komme ich an die ursprünglich gesetzten Werte ran?

        Vielleicht verstehe ich das Problem nicht ganz, aber wenn die Werte Dir bekannt sind, d.h. per value="Wert" in den Felder gesetzt sind, dann kannst Du doch ebenso document.formname.feldname.value == "Wert" vergleichen. Falls die ursprünglichen Werte generiert werden, so müssten die entsprechen Werte auch in die Funktion mit eingebaut werden.

        Evtl. einfach mal noch etwas mehr zur konkreten Funktionalität des Formulars posten, falls ich immernoch am Holzweg bin.

        Grüße aus Würzburg
        Julian

        1. Hallo Julian,

          die Felder werden aus einer Datenbank per php gefüllt. Mir ist klar, dass ich mit document.formname.feldname.value an den aktuellen Wert rankomme. Nur wie komme ich an die ursprünglichen Werte (die aus der DB kommen) wieder ran?

          ich könnte natürlich den Wert, den ich in mein Input-Feld generiere in einem Hidden-Feld zusätzlich speichern, und dann den aktuellen Wert des Input-Feldes mit dem des Hidden-Feldes, der sicher nicht geändert ist, vergleichen. Aber das wäre doch doppelt gemoppelt. Gibt es keine Möglichkeit, den Wert herauszubekommen, der z.B. im Quelltext noch zu finden ist?

          mfG
          Franziska

          1. Hallo !

            Du könntest beim Seitenaufruf alle Werte aus der Datenbank an ein JavaScript Array übergeben, und beim absenden die neuen Werte mit denen aus dem Array vergleichen.

            Ich würde allerdings nen anderen Weg gehen, da man Javascript bekanntlich abschalten kann ...

            Du schickst ja deine Daten bestimmt wieder an ein php-script -
            dann kannst du dir ja nochmal alle Werte aus der Datenbank holen und mit den neuen Werten vergleichen.

            Gruß
            Molde

            1. Ja Hallo Franzi,

              magst Du auch so gerne Schokolade? *g*

              Du könntest beim Seitenaufruf alle Werte aus der Datenbank an ein JavaScript Array übergeben, und beim absenden die neuen Werte mit denen aus dem Array vergleichen.

              Ich würde allerdings nen anderen Weg gehen, da man Javascript bekanntlich abschalten kann ...

              Du schickst ja deine Daten bestimmt wieder an ein php-script -
              dann kannst du dir ja nochmal alle Werte aus der Datenbank holen und mit den neuen Werten vergleichen.

              Wird Dir wohl nic anderes übrig bleiben. Ich habe hier neulich schon das Forum zu diesem Thema beschäftigt. "Dirty-Flag für input-Felder" hieß glaube ich der Thread.

              Ich gehöre zu den Leuten, die immer gerne alles auseinandernehmen und sich insbesondere über die Faulheit der Entwickler solcher Tools wie z.B Browser oder SQL oder so aufregen können. An so praktische Sachen, wie Statusverfolgung haben die nicht gedacht bei HTML. Wäre ja leicht, sowas im Browser als zusätzliches Datenfeld bei Submit zu übermitteln, zumal der ursprüngliche Wert ja vorhanden ist.

              Ich zieh schon mal den Kopf ein, weil es gleich bestimmt Beschwerden der Apologists hagelt, die alles gut finden, so wie es ist - aber über Windows meckern. Den Rest denk Dir selber.

              Liebe Grüße

              Tom

          2. Moin!

            die Felder werden aus einer Datenbank per php gefüllt. Mir ist klar, dass ich mit document.formname.feldname.value an den aktuellen Wert rankomme. Nur wie komme ich an die ursprünglichen Werte (die aus der DB kommen) wieder ran?

            Es gibt neben element.value auch noch element.defaultValue. :)

            http://selfhtml.teamone.de/javascript/objekte/elements.htm#default_value

            - Sven Rautenberg