HTML-Formulare für Benutzereingaben

Neben den bisher vorgestellten Dokument-Elementen können in HTML-Dateien auch Eingabe-Elemente in Formularen definiert werden. Formulareingaben können, wie wir später sehen werden, mit Programmen auf dem Webserver oder auch mit Javascript im Webbrowser verarbeitet werden. Zunächst lernen wir jedoch kennen, wie Formulare definiert werden und welche die wichtigsten Eingabe-Elemente sind.

Ein Formular wird in HTML mit dem Tag form definiert. Innerhalb des form-Tags dürfen beliebige andere HTML-Elemente stehen, insbesondere auch Elemente für Benutzereingaben.

Das einfachste Element zur Eingabe ist ein Texteingabefeld, das wir mit einem input-Tag definieren können, deren type-Attribut den Wert "text" hat:

<form>
    <input type="text" name="message">
</form>

Das Attribut name gibt an, unter welchem Namen der eingegebene Text beim Absenden des Formulars übermittelt werden soll. Das input-Tag hat keinen Inhalt und braucht kein schließendes Tag.

Zur Übermittlung der eingegebenen Daten fügen wir dem Formular einen entsprechenden Knopf hinzu. Diesen können wir mit dem input-Tag und dem Wert "submit" für das type-Attribut definieren.

<form>
    <input type="text" name="message">
    <input type="submit">
</form>

Beim Druck auf den Submit-Knopf wird die HTML-Seite neu geladen, wobei die Formulareingaben der URL als sogenannter Query-Parameter angehängt werden. Dieser wird der URL nach einem Fragezeichen angehängt und könnte zum Beispiel ?message=Hallo lauten, wenn ein Benutzer den Text Hallo in das Eingabefeld eingibt und dann auf den Submit-Knopf drückt.

Bei komplexeren Formularen können strukturierende HTML-Elemente wie Tabellen verwendet werden, um die Eingabefelder anzuordnen.

Neben Texteingabefeldern können wir auch Auswahllisten definieren, mit denen unter vorgegebenen Texten gewählt werden kann. Auswahllisten werden mit dem Tag select definiert, wobei jede Option durch ein option Tag angegeben wird. Die folgende Auswahlliste erlaubt zum Beispiel die Angabe der Priorität einer Nachricht.

<select name="priority">
    <option value="indifferent">egal</option>
    <option value="important">wichtig</option>
    <option value="urgent">dringend</option>
</select>

Das Attribut name definiert wieder den Namen, unter dem die gewählte Option übermittelt wird. Die value-Attribute der option-Tags werden als Wert der Eingabe mit dem gegebenen Namen priority übermittelt, wenn die entsprechende Option vor Absenden des Formulars ausgewählt wurde. Eine mögliche Eingabe bei Auswahl der letzten Option wäre also priority=urgent.

Statt mit einer Auswahlliste können wir vorgegebene Eingaben auch mit Hilfe sogenannter Radiobuttons definieren. Dieser werden als input-Tags angegeben, deren type-Attribut den Wert "radio" hat. Radiobuttons werden von Webbrowsern in der Regel als klickbare Kreise dargestellt.

<ol>
    <li>
        <input type="radio" name="priority" value="indifferent"> egal
    </li>
    <li>
        <input type="radio" name="priority" value="important"> wichtig
    </li>
    <li>
        <input type="radio" name="priority" value="urgent"> dringend
    </li>
</ol>

Hier verwenden wir eine geordnete Liste, um die Optionen anzuordnen. Da Radiobuttons von sich aus keinen anzuzeigenden Text enthalten fügen wir entsprechende Beschriftungen nach jedem Radiobutton ein. Alle Radiobuttons mit demselben Namen werden zu einer Gruppe von Optionen zusammengefasst, von denen nur höchstens eine ausgewählt werden kann. Die übermittelten Daten entsprechen hier also denen, die auch bei der vorherigen Auswahlliste übermittelt würden.

Schließlich können wir auch noch Checkboxen definieren, die als kleine Kästchen dargestellt werden, in denen Häkchen gesetzt werden können.

<input type="checkbox" name="confirmation">

Dieses Element definiert eine Checkbox, die, wenn ein entsprechendes Häkchen gesetzt wird, beim Absenden des Formulars als confirmation=on übermittelt wird.

Im folgenden Kapitel werden wir sehen, wie wir Formulareingaben aus den hier definierten Elementen mit Javascript im Browser verarbeiten können.