aria-required
Gibt an, dass die Benutzereingabe in einem Steuerelement erforderlich ist, bevor ein Formular abgesendet werden kann. Bei nativen Formularfeldern sollte das HTML-Attribut required verwendet werden; aria-required kommt nur zum Einsatz, wenn kein natives HTML-Äquivalent verfügbar ist.
Verwendung
Nur wenn das HTML-Attribut required nicht verfügbar ist. Bei nativen Formularfeldern — <input>, <select>, <textarea> — sollte required verwendet werden. Das HTML-Attribut wird von jedem Screenreader vorgelesen, nimmt an der Browser-Formularvalidierung teil und aktiviert die CSS-Pseudoklasse :required. aria-required leistet nichts davon eigenständig; es ist ausschließlich eine Mitteilung an assistive Technologie.
Berechtigte Einsatzfälle für aria-required:
- Eine benutzerdefinierte
role="combobox", die auf einem<div>oder einem gestylten<input>aufgebaut ist und bei der die Validierung selbst übernommen wird. - Eine
role="radiogroup", bei der die Gruppe als Ganzes erforderlich ist (auf einem<div>kannrequirednicht gesetzt werden). - Ein benutzerdefinierter Datepicker, File-Picker oder Rating-Widget, das kein natives Input-Element ist.
Wenn HTML required verwendet werden kann, sollte es verwendet werden.
Verhalten
Boolean. aria-required="true" veranlasst die assistive Technologie, zusammen mit Name und Rolle des Feldes „erforderlich“ (oder eine entsprechende Formulierung je nach Screenreader) vorzulesen. aria-required="false" entspricht dem Weglassen des Attributs und wird selten benötigt.
aria-required verhindert nicht das Absenden. Es fügt kein rotes Sternchen hinzu. Es aktiviert keine CSS-Pseudoklasse. Es ist ausschließlich ein Signal an die assistive Technologie. Die Validierungslogik, die Fehlermeldungen und der sichtbare Pflichtfeld-Marker müssen selbst implementiert werden.
Der sichtbare Pflichtfeld-Marker (ein *, das Wort „erforderlich“ o. ä.) sollte auch im zugänglichen Namen enthalten sein — entweder im sichtbaren Label-Text oder über eine Beschreibung — damit sehende und nicht sehende Nutzer dieselbe Information erhalten.
Häufige Fehler
aria-required="true"auf einem nativen<input>statt des HTML-Attributsrequiredverwenden. Funktioniert, aber Browser-Validierung und:required-Styling werden unnötig aufgegeben.aria-required="true"auf einem Nicht-Formularelement setzen — einem Button, einer Überschrift oder einem<div>ohne Rolle. Das Attribut wird ignoriert.- Den sichtbaren Pflichtfeld-Marker vergessen. Sehende Nutzer sehen ein nicht gekennzeichnetes Feld; Nutzer von assistiver Technologie hören „erforderlich“. Problem mit WCAG-Erfolgskriterium 1.3.3.
- Ein Feld in ARIA als erforderlich kennzeichnen, es aber in der tatsächlichen Formular-Absendelogik überspringen. Die Ansage lautet „erforderlich“; der Server akzeptiert dennoch leere Werte.
aria-requiredzu früh mitaria-invalid="true"koppeln. Das Feld ist erst ungültig, nachdem die Nutzerin oder der Nutzer versucht hat, das Formular abzusenden, und es leer gelassen hat — nicht beim Seitenaufruf.- Den sichtbaren
*-Marker lokalisieren, aber vergessen, dass der Screenreader-Text im Label nun nicht mehr übereinstimmt.
Beispiel
<!-- Native input: prefer the HTML attribute -->
<label for="email">
Email <span aria-hidden="true">*</span>
</label>
<input id="email" type="email" required aria-describedby="email-hint">
<p id="email-hint">Required. We will only use this to send your receipt.</p>
<!-- Custom combobox where HTML required isn't available -->
<div
role="combobox"
aria-required="true"
aria-labelledby="country-label"
aria-controls="country-listbox"
aria-expanded="false"
>
<input type="text" id="country-input">
</div>
<span id="country-label">Country (required)</span>