edubun
Deutsch

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 Label ist über übereinstimmende Werte von for und id mit seinem Eingabefeld verbunden.

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.

Im Editor unten wird das Formular in einer Sandbox angezeigt, ein Klick auf Subscribe schickt also nichts irgendwohin. Die Schaltfläche Prüfen schaut nur auf dein HTML.
formFasst Bedienelemente zusammen und sendet ihre Namen und Werte
labelBenennt ein Bedienelement, for passt zur id des Eingabefelds
nameSchlüssel, der mit dem Wert an den Server geht
requiredFeld muss vor dem Absenden ausgefüllt sein
fieldset / legendFasst zusammengehörige Bedienelemente unter einer Frage zusammen
placeholderHinweistext im Feld, kein Label
method="post"Sendet Daten im Rumpf der Anfrage, für Änderungen wie Bestellungen
  1. 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
  2. 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
  3. Welcher Eingabetyp zeigt auf Handys eine E-Mail-Tastatur und prüft auf @?
  4. Zwei Optionsfelder sollen sich gegenseitig ausschließen. Was müssen sie gemeinsam haben?
    • name
    • id
    • value
  5. Welches Element enthält die Frage eines fieldset?
    • legend
    • caption
    • label
  6. Welche Methode passt zu einem Suchformular, das man als Lesezeichen speichern will?
    • get
    • post
  7. 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
  8. Welches Element passt für eine mehrzeilige Nachricht?
    • textarea
    • input type="text"
    • select
  9. 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
  10. Welches Attribut lässt den Browser eine gespeicherte E-Mail-Adresse eintragen?
    • autocomplete="email"
    • placeholder="email"
    • value="email"
Das Wichtigste
  • 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