Formulare: Grundlagen
Klick bei einem gut gebauten Formularfeld auf das Wort Email daneben, und der Cursor springt in das Feld. Dieses kleine Detail ist das Element label bei der Arbeit.
Was ein Formular tut
Suchfelder, Anmeldeseiten und Kassenseiten sind alles Formulare. Ein <form>-Element fasst die Bedienelemente zusammen, und wenn der Besucher es absendet, schickt der Browser den name jedes Bedienelements zusammen mit seinem Wert an die Adresse im Attribut action des Formulars. Das Attribut method sagt, wie: get setzt die Daten in die Adresse, was zu Suchen passt, die man als Lesezeichen speichern will. post schickt sie im Rumpf der Anfrage, was zu allem passt, das Daten verändert, etwa eine Bestellung. HTML baut das Formular, und ein Programm auf dem Server entscheidet, was mit den ankommenden Daten geschieht.
<form action="/subscribe" method="post"> <label for="name">Name</label> <input id="name" name="name" type="text" autocomplete="name"> <label for="email">Email</label> <input id="email" name="email" type="email" required autocomplete="email"> <button type="submit">Subscribe</button> </form>
Jedes Bedienelement braucht ein Label
Das Element <label> benennt ein Bedienelement. Verbinde beide, indem du dem Eingabefeld eine id und dem Label ein passendes Attribut for gibst, oder indem du das Eingabefeld in das Label setzt. Die Verbindung bewirkt zweierlei. Screenreader lesen das Label vor, wenn das Feld den Fokus bekommt, sodass der Nutzer „Email, Text bearbeiten“ hört statt nur „Text bearbeiten“. Und ein Klick auf das Label setzt den Fokus ins Feld oder hakt das Kästchen an, was allen, besonders am Handy, eine größere Klickfläche gibt. Ein placeholder (grauer Hinweistext im Feld) ist kein Label: Er verschwindet, sobald du tippst, hat oft wenig Kontrast, und manche assistive Technik ignoriert ihn.
Eingabetypen
Das Attribut type von <input> verändert das Bedienelement. text ist das einzeilige Standardfeld. email, tel und url sehen ähnlich aus, zeigen auf Handys aber eine passende Tastatur, und der Browser prüft, ob eine E-Mail-Adresse die richtige Form hat. number nimmt Ziffern an und kann min und max haben. password verbirgt, was du tippst, date bietet einen Kalender, und checkbox und radio sind Kästchen zum Anklicken. Für längeren Text verwende <textarea>, für eine Auswahl aus einer Liste <select> mit <option>-Elementen darin.
Auswahlmöglichkeiten gruppieren
Optionsfelder (Radiobuttons), die zu einer Frage gehören, haben denselben name, und nur eines davon kann gleichzeitig gewählt sein. Umschließe die Gruppe mit <fieldset> und setz die Frage in <legend>. Ein Screenreader liest dann die Frage zusammen mit jeder Option vor: „Loaf size, Small, Optionsfeld, 1 von 2“. Jedes Optionsfeld bekommt trotzdem sein eigenes Label.
Schaltflächen und eingebaute Prüfungen
Ein <button> in einem Formular sendet es standardmäßig ab. type="submit" macht das deutlich, und type="button" erzeugt eine Schaltfläche, die nichts tut, bis JavaScript ihr eine Aufgabe gibt. Vor dem Absenden kann der Browser Felder für dich prüfen. required hält das Formular auf, wenn das Feld leer ist, type="email" lehnt Text ohne @ ab, und minlength, min und max setzen Grenzen. Diese Prüfungen helfen dem Besucher, Fehler früh zu korrigieren, aber sie laufen in seinem Browser und lassen sich umgehen. Der Server muss die Daten deshalb noch einmal prüfen. Das Attribut autocomplete mit Werten wie email oder name lässt den Browser gespeicherte Angaben eintragen. Das spart allen Tipparbeit und hilft besonders Menschen mit motorischen Einschränkungen oder Gedächtnisschwierigkeiten.
| form | Fasst Bedienelemente zusammen und sendet ihre Namen und Werte |
| label | Benennt ein Bedienelement, for passt zur id des Eingabefelds |
| name | Schlüssel, der mit dem Wert an den Server geht |
| required | Feld muss vor dem Absenden ausgefüllt sein |
| fieldset / legend | Fasst zusammengehörige Bedienelemente unter einer Frage zusammen |
| placeholder | Hinweistext im Feld, kein Label |
| method="post" | Sendet Daten im Rumpf der Anfrage, für Änderungen wie Bestellungen |
- Ein Label hat for="phone". Zu welchem Eingabefeld gehört es?
- Zum Eingabefeld mit id="phone"
- Zum Eingabefeld mit name="phone"
- Zum nächsten Eingabefeld, egal welche id
- Warum reicht ein placeholder nicht als Label?
- Er verschwindet beim Tippen und hat oft wenig Kontrast
- Es ist kein gültiges HTML
- Er sendet nichts
- Welcher Eingabetyp zeigt auf Handys eine E-Mail-Tastatur und prüft auf @?
- Zwei Optionsfelder sollen sich gegenseitig ausschließen. Was müssen sie gemeinsam haben?
- name
- id
- value
- Welches Element enthält die Frage eines fieldset?
- legend
- caption
- label
- Welche Methode passt zu einem Suchformular, das man als Lesezeichen speichern will?
- get
- post
- Der Browser prüft Pflichtfelder. Muss der Server trotzdem prüfen?
- Ja, Browserprüfungen lassen sich umgehen
- Nein, der Browser genügt
- Nur bei Passwörtern
- Welches Element passt für eine mehrzeilige Nachricht?
- textarea
- input type="text"
- select
- Was bewirkt ein Klick auf ein richtig verbundenes Label?
- Es setzt den Fokus in sein Feld oder hakt sein Kästchen an
- Es sendet das Formular ab
- Es leert das Feld
- Welches Attribut lässt den Browser eine gespeicherte E-Mail-Adresse eintragen?
- autocomplete="email"
- placeholder="email"
- value="email"
- form schickt name und Wert jedes Bedienelements per get oder post an action.
- Jedes Bedienelement bekommt ein label (for passt zur id). placeholder ist kein Label.
- Wähle den richtigen type, gruppiere Optionsfelder mit fieldset und legend, und der Server prüft noch einmal.
Quellen zu diesem Kurs (10)
- WHATWG, HTML Living Standard (html.spec.whatwg.org, checked 2026-10-17)
- MDN Web Docs, Learn web development: Structuring content with HTML, and the HTML element reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Structuring_content and developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements, checked 2026-10-17)
- MDN, HTML images (alt text guidance, checked 2026-10-17)
- W3C WAI, Images tutorial and alt decision tree (w3.org/WAI/tutorials/images/decision-tree, checked 2026-10-17)
- CERN, A short history of the Web (home.cern/science/computing/the-birth-of-the-web/short-history-web/, checked 2026-10-17)
- W3C and WHATWG memorandum of understanding, 28 May 2019 (w3.org/2019/04/WHATWG-W3C-MOU.html, checked 2026-10-17)
- W3C, Using ARIA, first rule of ARIA use (w3.org/TR/using-aria/, checked 2026-10-17)
- W3C Markup Validation Service (validator.w3.org, checked 2026-10-17)
- MDN, Viewport meta element (checked 2026-10-17)
- Every code exercise was checked with a Playwright probe against a reference solution.
Abgerufen: 2026-10-17