aria-invalid
Der aria-invalid
Zustand zeigt an, dass der eingegebene Wert nicht dem vom Programm erwarteten Format entspricht.
Beschreibung
Das aria-invalid
Attribut wird verwendet, um anzuzeigen, dass der in ein Eingabefeld eingegebene Wert nicht in einem Format oder mit einem Wert vorliegt, den die Anwendung akzeptiert. Dies kann Formate wie E-Mail-Adressen oder Telefonnummern umfassen. aria-invalid
kann auch verwendet werden, um anzuzeigen, dass ein erforderliches Feld leer ist.
Das aria-invalid
Attribut kann mit jedem typischen HTML-Formular-Element verwendet werden und ist nicht auf Elemente beschränkt, denen eine ARIA-Rolle zugewiesen ist.
Das Attribut sollte mit JavaScript als Ergebnis eines Validierungsprozesses gesetzt werden. Wenn ein Wert als ungültig oder außerhalb des Bereichs bestimmt wird, setzen Sie aria-invalid="true"
und informieren Sie den Benutzer über den Fehler. Für eine bessere Benutzererfahrung geben Sie Vorschläge, wie der Fehler behoben werden kann. Setzen Sie aria-invalid="true"
nicht auf leere erforderliche Elemente, bis der Benutzer versucht, das Formular abzusenden. Sie könnten immer noch daran arbeiten, es auszufüllen.
Hinweis:
Wenn aria-invalid
in Verbindung mit dem aria-required
Attribut verwendet wird, sollte aria-invalid
nicht auf true gesetzt werden, bevor das Formular abgesendet wird - nur als Reaktion auf die Validierung.
Es gibt derzeit vier Werte: zusätzlich zu true
und false
haben wir grammar
, das verwendet werden kann, wenn ein grammatikalischer Fehler festgestellt wird, und spelling
für Rechtschreibfehler. Wenn das Attribut nicht vorhanden ist, sein Wert false ist oder ein leerer String, gilt der Standardwert false. Jeder andere Wert wird so behandelt, als wäre true
gesetzt.
Native HTML-Validierung
HTML verfügt über eine native Formularvalidierung. Wenn ein Benutzer ein Formular mit einer Steuerung übermittelt, die Fehler enthält, zeigt die erste Formularsteuerung mit einem ungültigen Wert eine Fehlermeldung an, die nativ ist.
Wenn auf einer Formularsteuerung ein required
Attribut vorhanden ist, das nicht ausgefüllt ist, wird das Formular nicht übermittelt, und eine Fehlermeldung wie "Bitte füllen Sie dieses Feld aus" oder etwas Ähnliches erscheint. Die Meldungen für die native Validierung variieren je nach Browser und können nicht gestylt werden.
<input type="number" step="2" min="0" max="100" required />
Wenn der Benutzer in das vorherige Eingabebeispiel einen über dem Maximum, unter dem Minimum liegenden Wert oder einen, der nicht dem Schrittwert entspricht, eingegeben hätte, würde eine Fehlermeldung erscheinen. Wenn der Benutzer "3" eingegeben hätte, wäre die native Fehlermeldung ähnlich wie "Bitte geben Sie einen gültigen Wert ein."
Wenn Sie eigene Formularvalidierungsskripte erstellen, stellen Sie sicher, dass aria-invalid
auf ungültigen Formularsteuerungen enthalten ist, zusammen mit Styling (verwenden Sie den [aria-invalid="true"]
Attribut-Selektor) und Meldungen (mit aria-errormessage
), um den Benutzern zu helfen, zu verstehen, wo der Fehler liegt und wie er behoben werden kann.
Werte
grammar
-
Es wurde ein grammatikalischer Fehler festgestellt.
false
(Standard)-
Es wurden keine Fehler im Wert entdeckt.
spelling
-
Es wurde ein Rechtschreibfehler festgestellt.
true
-
Der vom Benutzer eingegebene Wert hat die Validierung nicht bestanden.
Jeder Wert, der nicht in dieser Liste steht, wird als true
behandelt.
Beispiel
Der folgende Ausschnitt zeigt eine vereinfachte Version von zwei Formularfeldern mit einer an das Blur-Ereignis angehängten Validierungsfunktion. Beachten Sie, dass es nicht unbedingt erforderlich ist, aria-invalid
auf false
zu setzen, da dies der Standardwert ist.
<ul>
<li>
<label for="name">Full Name</label>
<input
type="text"
name="name"
id="name"
aria-required="true"
aria-invalid="false"
onblur="checkValidity('name', ' ', 'Invalid name entered (requires both first and last name)');" />
</li>
<li>
<label for="email">Email Address</label>
<input
type="email"
name="email"
id="email"
aria-required="true"
aria-invalid="false"
onblur="checkValidity('email', '@', 'Invalid email address');" />
</li>
</ul>
Beachten Sie, dass es nicht notwendig ist, die Felder sofort bei Unscharf zu validieren; die Anwendung könnte warten, bis das Formular abgeschickt wird (obwohl dies nicht unbedingt empfohlen wird).
Der folgende Ausschnitt zeigt eine Validierungsfunktion, die nur auf das Vorhandensein eines bestimmten Zeichens prüft (in der realen Welt wird die Validierung wahrscheinlich komplexer sein):
function checkValidity(id, searchTerm, msg) {
const elem = document.getElementById(id);
if (elem.value.includes(searchTerm)) {
elem.setAttribute("aria-invalid", "false");
updateAlert();
} else {
elem.setAttribute("aria-invalid", "true");
updateAlert(msg);
}
}
Der folgende Ausschnitt zeigt die Alarmfunktionen, die die Fehlermeldung hinzufügen (oder entfernen):
function updateAlert(msg) {
const oldAlert = document.getElementById("alert");
if (oldAlert) {
oldAlert.remove();
}
if (msg) {
const newAlert = document.createElement("div");
newAlert.setAttribute("role", "alert");
newAlert.setAttribute("id", "alert");
const content = document.createTextNode(msg);
newAlert.appendChild(content);
document.body.appendChild(newAlert);
}
}
Beachten Sie, dass die Warnung die ARIA-Rollenattribut auf alert
gesetzt hat.
Zugehörige Schnittstellen
Element.ariaInvalid
-
Die
ariaInvalid
Eigenschaft, Teil derElement
Schnittstelle, spiegelt den Wert desaria-invalid
Attributs wider, das anzeigt, ob das Element einer Zugänglichkeits-API ausgesetzt ist. ElementInternals.ariaInvalid
-
Die
ariaInvalid
Eigenschaft, Teil derElementInternals
Schnittstelle, spiegelt den Wert desaria-invalid
Attributs wider.
Zugehörige Rollen
Verwendet in Rollen:
Vererbt in Rolle:
Spezifikationen
Specification |
---|
Accessible Rich Internet Applications (WAI-ARIA) # aria-invalid |
Siehe auch
aria-errormessage
- CSS
:valid
Pseudoklasse - CSS
:invalid
Pseudoklasse - Formularvalidierung Tutorial