mitmario.dev

<select>

Das <select>-Element erstellt ein Dropdown-Auswahlfeld in Formularen, aus dem Nutzer eine oder mehrere Optionen auswählen können. Es gehört zu den wichtigsten interaktiven Formular-Elementen und wird überall dort eingesetzt, wo aus mehreren vordefinierten Werten gewählt werden soll, von einfachen Länderauswahlen bis hin zu komplexen Filtermenüs. Im Gegensatz zu Radio-Buttons benötigt es deutlich weniger Platz und eignet sich besonders gut für Listen mit vielen Optionen.

Steckbrief <select>
Kategorie
Formulare
Art
Interaktiv
Attribute
7
Beispiele
3
Browser
5 von 5
E-Mail
0 von 5
Stand
03.02.2026

Grundlagen

Das <select>-Element funktioniert immer in Kombination mit mindestens einem <option>-Element, das die auswählbaren Werte definiert. Standardmäßig kann nur eine Option ausgewählt werden, aber mit dem multiple-Attribut lässt sich auch eine Mehrfachauswahl ermöglichen. Die ausgewählten Werte werden beim Absenden des Formulars an den Server übertragen.

Ein großer Vorteil von Select-Feldern ist die Möglichkeit, Optionen mit <optgroup> zu gruppieren. Das verbessert die Übersichtlichkeit enorm, wenn du viele Auswahlmöglichkeiten hast, beispielsweise bei der Auswahl von Städten, die nach Ländern gruppiert sind.

Syntax

index.html
Grundsyntax
<label for="city">Stadt wählen:</label>
<select id="city" name="city">
  <option value="">-- Bitte wählen --</option>
  <option value="berlin">Berlin</option>
  <option value="munich">München</option>
  <option value="hamburg">Hamburg</option>
</select>

Attribute

7 Attribute
Attribut und Beispiel Beschreibung
name String
name="country"
Name des Feldes, unter dem der Wert beim Formular-Submit übertragen wird
multiple Boolean
multiple
Erlaubt die Auswahl mehrerer Optionen gleichzeitig (mit Strg/Cmd + Klick)
size Number
size="5"
Anzahl der gleichzeitig sichtbaren Optionen (verwandelt Dropdown in scrollbare Liste)
required Boolean
required
Macht die Auswahl zu einem Pflichtfeld (verhindert Submit ohne Auswahl)
disabled Boolean
disabled
Deaktiviert das gesamte Select-Feld (Wert wird nicht übertragen)
form String
form="myForm"
ID des zugehörigen Formulars (ermöglicht Select außerhalb des form-Elements)
autocomplete String
autocomplete="country"
Gibt dem Browser Hinweise zum Autofill-Verhalten

Beispiele

3 Beispiele

Das klassische Dropdown-Menü mit einer einfachen Auswahl. Beachte die leere erste Option als Platzhalter.

index.html
Einfache Auswahl
<form>
  <label for="language">Bevorzugte Programmiersprache:</label>
  <select id="language" name="language" required>
    <option value="">-- Bitte wählen --</option>
    <option value="javascript">JavaScript</option>
    <option value="python">Python</option>
    <option value="java">Java</option>
    <option value="csharp">C#</option>
    <option value="php">PHP</option>
  </select>
</form>

Barrierefreiheit

Für barrierefreie Select-Felder ist ein zugeordnetes <label>-Element mit passendem for-Attribut absolut notwendig. Screenreader lesen dann beim Fokussieren des Feldes automatisch das Label vor. Wenn du zusätzliche Hinweise geben willst, nutze aria-describedby, um auf einen Hilfetext zu verweisen.

Die Tastaturnavigation funktioniert bei Select-Feldern standardmäßig gut: Mit Tab kannst du das Feld fokussieren, mit Enter oder Leertaste öffnest du das Dropdown, mit den Pfeiltasten navigierst du durch die Optionen und mit Enter bestätigst du die Auswahl. Bei Multiple-Selects kannst du mit Shift + Pfeiltasten mehrere Optionen markieren.

Vermeide zu viele Optionen ohne Gruppierung: das macht die Navigation mit Screenreadern mühsam. Ab etwa 10 Optionen solltest du über <optgroup> nachdenken oder alternative UI-Patterns wie eine Suche in Betracht ziehen.

Häufige Fehler

4 Fehler
01 Fehlender Default-Placeholder
Viele vergessen eine erste leere Option mit einem Platzhalter-Text wie ”— Bitte wählen —”. Ohne diese Option ist beim Laden automatisch die erste echte Option ausgewählt, was oft ungewollt ist und zu Validierungsfehlern führen kann. Die Platzhalter-Option sollte immer value="" haben.
02 Select ohne Label
Ein Select-Feld ohne zugeordnetes Label ist für Screenreader-Nutzer völlig unverständlich. Das <label>-Element mit for-Attribut ist kein optionales Nice-to-have, sondern ein Muss für Barrierefreiheit. Auch wenn du das Label visuell versteckst, muss es im HTML vorhanden sein.
03 Zu viele Optionen ohne Gruppierung
Wenn du mehr als 15-20 Optionen hast, wird die Liste schnell unübersichtlich. Nutze <optgroup>, um zusammengehörige Optionen zu gruppieren. Bei sehr vielen Optionen (über 50) solltest du über alternative Lösungen wie ein Autocomplete-Feld nachdenken.
04 Multiple-Select ohne Hinweis
Wenn du multiple verwendest, wissen viele Nutzer nicht, dass sie Strg/Cmd gedrückt halten müssen, um mehrere Optionen zu wählen. Füge immer einen sichtbaren Hinweis hinzu oder verwende stattdessen Checkboxen, die intuitiver sind.

Browser-Kompatibilität

5 von 5

Das select-Element wird von allen Browsern vollständig unterstützt. Das Styling mit CSS ist eingeschränkt, aber die Funktionalität ist überall garantiert.

  • Chrome

    Komplett

  • Firefox

    Komplett

  • Safari

    Komplett

  • Edge

    Komplett

  • Opera

    Komplett

Email-Kompatibilität

0 von 5

Interaktive Formularelemente wie select werden von E-Mail-Clients aus Sicherheitsgründen nicht unterstützt.

  • Apple Mail

    Keine

    Entfernt Formularelemente aus Sicherheitsgründen.

  • Gmail

    Keine

    Gmail entfernt select-Elemente komplett aus dem HTML.

  • Outlook

    Keine

    Outlook entfernt Formularelemente vollständig.

  • Thunderbird

    Keine

    Formularelemente werden nicht unterstützt.

  • Yahoo Mail

    Keine

    Yahoo Mail entfernt Formular-Elemente aus dem HTML.

Newsletter

einmal die Woche, kostenlos

Neue Artikel und Videos, was sich auf der Lernplattform tut, und ab und zu ein Sonderpreis zum Kursstart. Kurz genug, dass du es auch liest.

Zuletzt verschickt · KW 40

Einmal alles neu, und die Lernplattform ist da

Danach kommt eine Mail mit Bestätigungslink, erst dann bist du eingetragen. Abmelden geht unten in jeder Ausgabe. Mehr dazu in der Datenschutzerklärung.