Ein Problem muß angesprochen werden: Wenn man formulare ausschließlich mit HTML-Werkzeugen behandelt, ist keine Kontrolle darüber möglich, ob der Benutzer das formular richtig ausgefüllt hat. Erst wenn man formulare mit JavaScript behandelt, sind Vollständigkeitskontrollen oder Plausibilitätskontrollen möglich.
Das spätere Formular zeigt einen einfachen Aufbau, bei dem die formularelemente in wesentlichen untereinander stehen und die Beschriftungen meistens rechts neben den Elementen stehen. Für einen flexibleren und besseren Aufbau verwende man Tabellen ohne Rahmen. Damit ist es auch möglich, Beschriftungen links statt rechts anzubringen (was erstrebenswert ist) und dennoch die Elemente in einer einheitlichen Position zu plazieren, was ohne Tabellen nicht gut möglich ist, da die Beschriftungen in der Regel unterschiedlich lang sind.
Mit Style-Sheets (Formatvorlagen) kann das Positionierproblem ebenfalls gelöst werden.
<form method="post" action="..."> ... ... </form>Beim Attribut method ist statt des Wertes post (zu bevorzugende methode) auch noch der Wert Get möglich.
Technische Details zu post und Get:
Mit dem Attribut action wird festgelegt, was mit den
formulardaten beim Absenden geschehen soll: Entweder Aufruf eines CGI-Skript auf dem Server
(wird hier aus bereits erklärten Gründen nicht behandelt) oder mit
"mailto:..." Absenden an eine eMail-Adresse.
Dazu ein Beispiel:
<form method="post" action="mailto:anton@huber-online.de.de"> enctype="text/plain" ... ... </form>Mit enctype="text/plain" Zeilenumbruch in der eMail nach jedem Element
Das formular enthält neben beliebigen Texten in beliebigen Auszeichnungen und auch Grafiken insbesonders:
Mit dem Attribut <name="..." wird der Bezeichner des Eingabefeldes festgelegt, der zusammen mit den Benutzereingaben abgesendet wird.
Bei Aktivierung der Checkbox wird nach dem Absenden des formulars der Wert des Attributs value an den Server übertragen; bei Nichtaktivierung wird ein Leerstring übertragen.
Mit dem optionalen Attribut checked (kein Wert)
kann die Voreinstellung der Checkbox auf aktiviert festgelegt werden.
Man achte darauf, dass vor oder nach der Checkbox mit normalem Text eine Checkbox-Beschriftung geschrieben
wird, sonst wird die Checkbox zum Blindflug.
Bei Aktivierung des Radiobuttons wird nach dem Absenden des formulars der Wert des Attributs value an den Server übertragen; bei Nichtaktivierung wird ein Leerstring übertragen.
Mit dem optionalen Attribut checked (kein Wert)
kann die Voreinstellung eines der Radiobuttons auf aktiviert festgelegt werden.
Man achte darauf, dass vor oder nach den Radiobuttons mit normalem Text Radiobutton-Beschriftung geschrieben werden, sonst werden die Radiobuttons zum Blindflug.
Man achte unbedingt darauf, dass die zu einer Gruppe gehörenden Radiobuttons beim Attribut name den gleichen Wert bekommen!
<textarea name="..." cols="..." rows="..." ... > ..... </textarea>
Mit den Attributen cols="..." und rows="..." wird die Größe des mehrzeiligen Eingabefeldes in Textzeichen pro Zeile und Zeilenzahl festgelegt. Der Eingabetext kann aber größer sein als das mehrzeilige Eingabefeld; es besitzt zu diesem Zweck Bildlaufleisten.
Befindet sich zwischen dem Anfang- und End-Tag Text, so wird dieser als Voreinstelltext in das mehrzeilige Eingabefeld geschrieben.
Der Tag besitzt einen End-Tag und hat das format:
<select name="..." [multiple] [size="..."] [value="..."]> <option>optionswert_1</option> <option>optionswert_2</option> .... <option>optionswert_n</option> </select>
Mit dem Attribut <name="..." wird der Bezeichner des Listenfeldes festgelegt.
Mit dem Attribut <size="..." wird die Anzahl der sichtbaren Zeilen im Listenfeld festgelegt.
Mit dem Attribut <multiple wird festgelegt, dass beliebig viele Elemente aus der Liste ausgewählt werden. Mit gedrückter Strg-Taste können mehrere Elemente zur Auswahl markiert werden.
Mit dem Attribut <size="..." wird die Anzahl der sichtbaren Zeilen im Listenfeld festgelegt.
Mit dem (Unter-) Tag <option> werden die einzelnen Optionen festgelegt.
Zum Verständnis des folgenden Formulars ist das Betrachten des Quellcodes notwendig.