HTML-Formulare
HTML-Formulare
HTML-Formulare dienen der Eingabe von Daten
- Daten werden an den Server übermittelt
- Zwei HTTP-Methoden, um Daten zu übertragen
- GET: Daten werden als Teil der Request-URL übertragen
- POST: Daten werden im Request-Body übertragen
- Bereiche in der HTML-Seite werden mit
<form>-Tag markiert - action: URL, die die Daten erhalten soll
- method: HTTP-Methode für die Datenübertragung (GET | POST)
- accept-charset: Zeichensatz für die übertragenen Daten
Einzeilige Textfelder
<input type="text" .../>name: Name des Feldes (wird vom Server ausgewertet)value: Eingegebener Wert und Vorbelegungreadonly: Nur Anzeige, keine Eingabesize: Angezeigte Größe (in Zeichen)maxlength: Maximale Anzahl der Zeichen in Eingabe<input type="password" .../>- wie Text nur werden die Zeichen nicht angezeigt
Beispiel: einzeilige Textfelder
Einzeiliges Textfeld <input type="text" size="30" maxlength="40" value="Hugo"/><br>
Readonly-Feld:
<input type="text" size="30" maxlength="40" value="bleibt" readonly="readonly"/><br>
Passwort-Feld: <input type="password" size="12" maxlength="40"/>
Weitere Typen für <input>
Weitere Typen (type=...) für das <input>-Element aus HTML5
- search: Suchanfragen (anderer Rahmen)
- tel: Telefonnummern (keine Validierung)
- email: E-Mail-Adressen (keine Validierung)
- url: URL (keine Validierung)
- number: Zahlen (Minimum, Maximum, Schrittweite)
- range: Auswahl aus einem Bereich
- date, datetime, datetime-local, time: Datum und Uhrzeit
- color: Farben
Beispiel: Weitere Typen für <input>
Normales Feld: <input type="text"><br>
Suchfeld: <input type="search">
Telefon: <input type="tel"><br>
E-Mail: <input type="email"><br>
URL: <input type="url">
Zahlen: <input type="number" min="0" max="24" step="0.1"><br>
Bereiche: <input type="range">
Datum: <input type="date"><br>
Datum und Uhrzeit: <input type="datetime"><br>
Datum und Uhrzeit: <input type="datetime-local"><br>
Uhrzeit: <input type="time">
Farbe: <input type="color">
Mehrzeilige Textfelder
<textarea ... >Text</textarea>
- Mehrzeiliges Textfeld (bei Bedarf mit Scrollbalken)
name: Name des Feldes (wird vom Server ausgewertet)cols: Anzahl der Spaltenrows: Anzahl der Zeilenwrap: Behandlung von Zeilenumbrüchen (nur HTML5)- hard: Zeilenumbrüche wie sie sind senden
- soft: Zeilenumbrüche entfernen
Beispiel: Mehrzeiliges Textfeld
Mehrzeiliges Textfeld<br/>
<textarea name="feedback" cols="40" rows="5">Ein kleines
Bächlein namens Duden fließt durch ihren Ort und versorgt
sie mit den nötigen Regelialien.</textarea>
Platzhalter
Über placeholder können Platzhalter angegeben werden
<input type="text" name="user" placeholder="Benutzername">
<input type="password" name="password" placeholder="Passwort">
Auswahllisten
Auswahllisten und Drop-Down-Boxen mit <select>-Tag
<select>-Tag umschließt die Optionenname: Name des Feldessize: Anzahl der angezeigten Zeilen (nur bei Auswahlliste)multiple: Mehrfachauswahl zulassen (wandelt Drop-Down in Auswahlliste um)<option>-Elemente zeigen mögliche Optionen anselected: Eintrag ist ausgewähltvalue: Wert, der bei Auswahl des Eintrages übertragen werden soll
Beispiel: Auswahlliste
Auswahlliste<br/>
<select name="fruit" size="2" multiple="multiple">
<option value="apple" selected="selected">Äpfel</option>
<option value="pear">Birnen</option>
<option value="orange">Orangen</option>
<option value="kiwi" selected="selected">Kiwi</option>
</select>
Beispiel: Drop-Down-Liste
Drop-Down<br/>
<select name="fruit" size="1">
<option value="apple">Äpfel</option>
<option value="pear">Birnen</option>
<option value="orange" selected="selected">
Orangen</option>
<option value="kiwi">Kiwi</option>
</select>
Radiobuttons und Checkboxen
- Radiobuttons: Gruppe von Knöpfen bei denen nur einer ausgewählt werden kann
name: Gruppierung zusammengehöriger Knöpfevalue: Wert, der übertragen wirdchecked: Button ist aktiviert- Checkboxen: Gruppe von Eingaben, bei denen beliebig viele ausgewählt werden dürfen
name: Name der Gruppevalue: Wert, der bei markierter Box übertragen wirdchecked: Box ist aktiviert
Beispiel: Radio-Button
Radio-Button<br/>
<input type="radio" name="fruit"
value="apple"/>Äpfel<br/>
<input type="radio" name="fruit"
value="pear"/>Birnen<br/>
<input type="radio" name="fruit" checked="checked"
value="orange"/>Orangen<br/>
<input type="radio" name="fruit"
value="kiwi"/>Kiwi<br/>
Beispiel: Ckeckboxen
Checkboxes<br/>
<input type="checkbox" name="fruit"
value="apple" checked="checked"/>Äpfel<br/>
<input type="checkbox" name="fruit"
value="pear"/>Birnen<br/>
<input type="checkbox" name="fruit"
value="orange" checked="checked"/>Orangen<br/>
<input type="checkbox" name="fruit"
value="kiwi"/>Kiwi<br/>
Schaltflächen (Button) in Formularen
- Absenden von Formularen
- Standard-Knopf mit
<input type="submit" .../> - Selbst gestalteter Knopf mit
<button type= "submit" ...> - Auslösen von JavaScript-Ereignissen
- Standard-Knopf mit
<input type="button" .../> - Selbst gestalteter Knopf mit
<button type="button" ...> - Attribute
name: Name des Knopfesvalue: Übertragener Wert und Beschriftung (bei Standard-Knöpfen)
Beispiel: Schaltflächen
<input type="submit" name="Start" value="Startseite"/>
<button type="submit" name="Start" value="Startseite">
Beschriftung
</button>
<button type="submit" name="Start" value="Startseite">
<img src="img/html-redbutton.png" width="50"/>
</button>
<input type="button" name="Start" value="Startseite"/>
<button type="button" name="Start" value="Startseite">
Beschriftung
</button>
<button type="button" name="Start" value="Startseite">
<img src="img/html-redbutton.png" width="50"/>
</button>
Versteckte Formularfelder
<input type="hidden" .../>
- Formularfelder werden nicht angezeigt
- Daten werden zusammen mit anderen Feldern an den Server gesendet
- Attribute
name: Name des Feldesvalue: Wert- Achtung: Es gibt Tools, um die Felder im Browser zu manipulieren
Beschriftung von Formularelementen
<label for="id" ...>
- Verknüpft Beschriftung mit Formularfelde
- Wert im Attribut
forbezieht sich auf die ID eines Feldes - Anwendbar auf
<input>,<select>und<textarea> - Beim Klicken auf den (zugeordneten) Text wird das Eingabefeld selektiert bzw. die Checkbox aktiviert
- Wichtige Unterstützung für Screenreadern
Gruppieren von Formularelementen
<fieldset>...</fieldset>
- Zusammengehörige Formularelemente werden gruppiert
- mit
<legend>...</legend>kann eine Gruppenüberschrift vergeben werden - Browser kann Gruppen kenntlich machen (z. B. durch Linien)
- Gruppen lassen sich durch CSS formatieren
Beispiel: Beschriftung
<label for="name">Nachname:</label>
<input type="text" id="name" name="zuname" value="Hans Müller"/>
<fieldset>
<legend>Adresse</legend>
<label for="strasse">Strasse</label>
<input type="text" id="strasse" name="strasse" size="25"/><br/>
<label for="plz">PLZ</label> / <label for="ort">Ort</label>
<input type="text" id="plz" name="plz" size="5"/>
<input type="text" id="ort" name="ort" size="20"/><br/>
</fieldset>
Autovervollständigung
- Autovervollständigung des Browsers kann mit autocomplete kontrolliert werden
autocomplete="on": Browser darf Feld vervollständigenautocomplete="off": Browser darf Feld nicht vervollständigen- Vorschläge für Eingabefelder mit
<datalist>
Name eines Simpsons:
<input type="text" autocomplete="on" list="simpsons">
<datalist id="simpsons">
<option value="Homer"/>
<option value="Marge"/>
<option value="Lisa"/>
<option value="Bart"/>
<option value="Lisa"/>
<option value="Mona"/>
<option value="Abe"/>
</datalist>
Formularvalidierung
- HTML 4.01 benötigte JavaScript zur Validierung
- HTML5 bietet eine direkte Validierung von Formularen
- Pflichtfelder, die ausgefüllt werden müssen
- Syntaxregeln für bestimmte Feldtypen (z. B. E-Mail)
- Test auf die Bedingungen eines Feldes (z. B. max und min)
- Beliebige Syntaxregeln als Reguläre Ausdrücke
- Beliebige Validierungen mithilfe von JavaScript
Automatische Validierung
<form>
E-Mail-Adresse: <input size="30" type="email" name="adresse" id="adresse">
<br>
<input type="submit">
</form>
<form>
Vorname <input size="30" type="text" name="vorname" required><br>
Name <input size="30" type="text" name="nachname" required><br>
Telefon <input size="12" type="tel" name="telefon"><br>
<input type="submit">
</form>
Validierung per REGEX
<form>
Postleitzahl: <input size="5" type="text" name="plz" pattern="[0-9]{5}"><br>
<input type="submit">
</form>