Formulare 1
Was sind Formulare?
Formulare dienen der Interaktion des Benutzers mit einer Webseite. Das „form“-Element ist ein Container, in dem alle zu einem Formular gehörenden Formularelemente platziert werden:
Funktionsweise von Formularen
Daten aus dem Formular übergeben
In React werden Formulardaten durch die Komponente verwaltet, in der sich das Formular befindet. Dabei werden die Formulardaten in Komponenten-Eigenschaften, d. h. dem „state“-Objekt, gespeichert. Dazu müssen die entsprechenden Eigenschaften zuvor im Konstruktor initialisiert werden. Mit Hilfe von Event-Attributen in den Formularelementen und passenden Event-Handlern können die Benutzeraktionen behandelt werden. Der Zugriff innerhalb des Event-Handlers auf die Daten im Formular erfolgt über das Event-Objekt mit „event.target.value“:
index.html:
index.js:
Ergebnis:
Attribute der Formularelemente auslesen
Mit Hilfe von „event.target.attributname“ können auch andere Attribute eines Formular-elements ausgelesen werden:
index.html:
index.js:
Ergebnis:
Damit können Event-Handler auch über das „name“-Attribut individuell auf das entsprechende Formularelement reagieren, das den Event-Handler ausgelöst hat. Soll für das Setzen der entsprechenden Eigenschaft im „state“-Objekt eine Variable verwendet werden, so muss die Variable in rechteckige Klammern gesetzt werden:
index.js:
Ergebnis:
Formularelemente als Variablen
Auch für Formularelemente können Variablen verwendet werden, die dann in Abhängigkeit bestimmter Eigenschaftswerte ein- bzw. ausgeblendet werden können:
index.html:
index.js:
Ergebnis:
Formulare absenden
Wird in einem Formular ein „submit“-Button verwendet, kann mit dem Event-Attribut „onSubmit“ im „form“-Element ein Event-Handler für das Absenden des Formulars mit dem Formular verknüpft werden.
Im folgenden Beispiel wird zunächst ein Login-Formular angezeigt. Wird auf „Senden“ geklickt, wird über den Event-Handler der Benutzername und das Passwort geprüft. Sind diese nicht korrekt, wird der Rahmen um die Eingabefelder rot angezeigt. Sind Benutzername und Passwort korrekt, wird das Login-Formular ausgeblendet und die eigentliche Seite eingeblendet:
index.html:
pagestyle.css:
page.js:
index.js:
Ergebnis: