Multi Select in HTML

Mehrfachauswahl, die auch angesagt wird

Feldname, Beschriftung, Optionsrollen: drei Stellen in der Mehrfachauswahl.

Website prüfen
Beispiel im Prüfbericht Markierter Befund
Markierter Befund · Kritisch · WCAG 4.1.2Linke Ortsauswahl ohne Namen

Mehrfachauswahl als System

Zwei Oberflächen, dieselben gesendeten Werte

Sehen Sie zuerst, was eine Person bedient. Verfolgen Sie dann Auswahl, Feldname und Werte bis zu FormData.

A

Ein kompaktes Steuerelement

select multiple

1 Themen auswählen

Mehrere Einträge: Strg/Cmd oder Umschalt plus Klick. Mit der Tastatur Umschalt plus Pfeiltaste für einen Bereich.

Baunicht gewählt
Verkehrgewählt
Umweltnicht gewählt
Sozialesgewählt
Kulturnicht gewählt

1Namelabel for="themen"

2Mehrfachmodusmultiple size="5"

3Schlüsselname="themen"

Stärke: viele kurze Optionen in begrenzter Höhe. Prüfpunkt: Auswahlgesten unterscheiden sich nach Plattform und Browser.

B

Mehrere einzelne Steuerelemente

Checkbox-Gruppe

1 Themen auswählen

Wählen Sie alle passenden Themen.

Bau
Verkehrgewählt
Umwelt
Sozialesgewählt
Kultur

1Gruppennamefieldset + legend

2Einzelnamelabel for="thema-bau"

3Schlüsselname="themen"

Stärke: jede Option und jeder Zustand bleiben sichtbar. Prüfpunkt: eine lange Gruppe braucht gute Gliederung.

Beide Wege treffen hier zusammen

Request-Payload

themen = verkehrthemen = soziales
JavaScriptdaten.getAll('themen')→ ['verkehr', 'soziales']

get() liefert nur den ersten passenden Wert. getAll() liefert alle Werte desselben Schlüssels als Array.

Entscheidungshilfe

Welche Oberfläche passt zur Aufgabe?

StartSollen mehrere Antworten möglich sein?

Sind die Optionen kurz und sollen alle Zustände direkt sichtbar sein?

JaCheckbox-Gruppe

fieldset und kurze legend; jede Checkbox erhält ein eigenes label.

Nein, kompakte Liste nötigselect multiple

Auswahlhinweis sichtbar ergänzen und Bedienung auf den Zielplattformen prüfen.

Optionen enthalten AktionenAnderes Muster

Eine Listbox kann keine interaktiven Inhalte in Optionen zugänglich abbilden. Prüfen Sie eine Gruppe eigenständiger Steuerelemente.

A

Native Mehrfachauswahl

<form id="anfrage">
  <label for="themen">Themen auswählen</label>
  <p id="themen-hinweis">
    Mehrere Einträge: Strg/Cmd oder Umschalt
    plus Klick. Tastatur: Umschalt plus Pfeiltaste.
  </p>

  <select id="themen" name="themen" multiple
          size="5" aria-describedby="themen-hinweis">
    <option value="bau">Bau</option>
    <option value="verkehr">Verkehr</option>
    <option value="umwelt">Umwelt</option>
    <option value="soziales">Soziales</option>
    <option value="kultur">Kultur</option>
  </select>
</form>
B

Checkbox-Gruppe

<form id="anfrage">
  <fieldset>
    <legend>Themen auswählen</legend>

    <input id="bau" name="themen"
           type="checkbox" value="bau">
    <label for="bau">Bau</label>

    <input id="verkehr" name="themen"
           type="checkbox" value="verkehr">
    <label for="verkehr">Verkehr</label>

    <input id="umwelt" name="themen"
           type="checkbox" value="umwelt">
    <label for="umwelt">Umwelt</label>
  </fieldset>
</form>
C

Alle Werte auslesen

const formular = document.querySelector('#anfrage');
const daten = new FormData(formular);
const themen = daten.getAll('themen');

console.log(themen);

Für ausgewählte Beschriftungen eines select steht zusätzlich selectedOptions bereit. Für die gesendeten Werte beider Varianten bleibt FormData.getAll() der gemeinsame Weg.

Aus dem Prüfbericht

Drei Stellen, drei Befunde

Zum Mitnehmen

Die Mehrfachauswahl, korrigiert

Ein label, ein for, und die Optionen bekommen ihre Rolle.

Korrektur in 2 Schritten ansehen
  1. Der Mehrfachauswahl einen Namen geben

    Ein label, per for mit dem select verbunden, wird zum Namen der Liste. multiple bleibt, wie es ist.

    KorrekturvergleichSchritt 1 · HTML

    Vorher

    <span>Themen auswählen</span>
    <select name="themen" multiple size="5">
      <option value="bau">Bau</option>
    </select>

    Nachher

    <label for="themen">Themen auswählen</label>
    <select id="themen" name="themen" multiple size="5">
      <option value="bau">Bau</option>
    </select>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Klicken Sie auf „Themen auswählen“. Springt der Fokus in die Liste, ist der Name verbunden.

  2. Der nachgebauten Liste Optionen geben

    Wer die Mehrfachauswahl mit div nachbaut, braucht in der Listbox Kinder mit role="option" und aria-selected.

    KorrekturvergleichSchritt 2 · ARIA

    Vorher

    <div role="listbox" aria-label="Themen" aria-multiselectable="true">
      <span>Bau</span>
      <span>Verkehr</span>
    </div>

    Nachher

    <div role="listbox" aria-label="Themen" aria-multiselectable="true">
      <span role="option" aria-selected="false">Bau</span>
      <span role="option" aria-selected="false">Verkehr</span>
    </div>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Ein Vorleseprogramm sagt beim Eintritt „Themen, Listenfeld“ und liest dann die einzelnen Optionen.

Werbung

Kostenloser Website-Barrierefreiheits-Check

Website auf Barrierefreiheit prüfen.

Technische WCAG-Warnsignale erkennen. Kritische Stellen zuerst prüfen.

Der Website-Check ist bereit.

Werbung

Ein letzter Schritt

Prüfen, bevor Sie gehen.

Finden Sie automatisch erkennbare Barrieren auf Ihrer eigenen Website.

Website prüfen

Kostenlos starten · keine Installation

Automatisches Screening. Tastaturbedienung und Screenreader bleiben manuelle Prüfung.