Técnica ARIA WCAG 2.2
ARIA2Marcar los campos obligatorios con aria-required
Nombre oficial en el W3C: Identificar un campo obligatorio con la propiedad aria-required
En pocas palabras
Cuando un formulario señala un campo obligatorio con un asterisco, un color o la palabra «obligatorio», el atributo aria-required="true" pasa ese dato al lector de pantalla. Así lo sabe también quien no ve la marca. El aviso visible debe seguir ahí: aria-required por sí solo no basta.
Por qué es importante
El asterisco rojo o el borde de color solo se ven. Un lector de pantalla (programa que lee en voz alta la pantalla) puede saltarse el asterisco o decir «asterisco» sin más.
Si nadie le avisa, la persona envía incompleto el formulario de cita previa y recibe errores. Con aria-required="true", el lector anuncia «obligatorio» al llegar al campo, antes de rellenarlo.
Cómo se hace
- Indique de forma visible qué campos son obligatorios: un asterisco, la palabra «obligatorio» o ambos. Explique el asterisco al principio del formulario.
- Añada
aria-required="true"a cada campo obligatorio, y solo a esos. - En controles hechos a medida, como un grupo de opciones con
role="radiogroup", ponga el atributo en el elemento que agrupa las opciones. - En campos HTML normales también sirve el atributo
required. Además de avisar al lector, activa la validación del navegador. - Si un campo deja de ser obligatorio según otra respuesta, cambie el valor a
falsecon JavaScript.
Cómo comprobarlo
- Localice todos los campos que se muestran como obligatorios.
- Revise en el código que cada uno tiene
aria-required="true"orequired, y que los opcionales no lo tienen. - Con las herramientas del navegador (F12, panel «Accesibilidad»), confirme que el campo figura como obligatorio («required»).
- Recorra el formulario con NVDA o VoiceOver. En cada campo obligatorio debe oír «obligatorio» o «requerido».
Ejemplo
Campo obligatorio de un formulario de cita previa, marcado con asterisco y con aria-required.
<p>Los campos marcados con * son obligatorios.</p>
<label for="dni">DNI o NIE *</label>
<input type="text" id="dni" aria-required="true">
Ver el texto completo del W3C (traducción al español)
Esta es una traducción no oficial al español de la técnica ARIA2 de Techniques for WCAG 2.2, del W3C. Puede contener errores. El único documento oficial y normativo es la versión original en inglés, publicada en el sitio web del W3C.
Aplicabilidad
Tecnologías compatibles con Accessible Rich Internet Applications (WAI-ARIA).
Descripción
El objetivo de esta técnica es reforzar la indicación por software de que un campo de formulario (que se muestra como obligatorio mediante la presentación) es imprescindible para que el formulario pueda enviarse correctamente.
El hecho de que el elemento sea obligatorio suele presentarse visualmente (mediante un símbolo textual o no textual, un texto que indica que la entrada es obligatoria, o color o estilos), pero esto puede no ser determinable por software como parte del nombre del campo.
La propiedad aria-required de WAI-ARIA indica que se requiere la entrada del usuario antes del envío. La propiedad aria-required puede tener los valores true o false. Por ejemplo, si el usuario debe rellenar un campo de dirección, aria-required se establece en true.
Esta técnica se considera recomendada para cumplir el criterio 3.3.2 Etiquetas o instrucciones, porque el uso de aria-required="true" por sí solo, sin ningún indicador visual, no sería perceptible para la mayoría de los usuarios.
Sin embargo, cuando el campo lleva asociado un asterisco u otro símbolo textual, usar la propiedad aria-required además de la presentación visual permite que los agentes de usuario transmitan esta información importante al usuario de la manera propia de cada agente de usuario. Consulte ARIA in HTML para obtener información sobre cómo proporcionar estados y propiedades de WAI-ARIA con HTML. Los estados y propiedades de WAI-ARIA también son compatibles con otros lenguajes; consulte la documentación de dichos lenguajes.
Ejemplos
La propiedad required se indica con un asterisco colocado dentro del elemento label
<form>
<p>Note: * denotes a required field</p>
<div>
<label for="usrname">Login name *:</label>
<input aria-required="true" autocomplete="username" id="usrname" type="text">
</div>
<div>
<label for="pwd">Password *:</label>
<input aria-required="true" autocomplete="current-password"
id="pwd" type="password">
</div>
<div>
<input type="submit" value="Login">
</div>
</form>
La propiedad required se indica con la palabra "required" (obligatorio) colocada junto al elemento label
<form>
<div>
<label for="fname">First name:</label> <span>(required)</span>
<input aria-required="true" autocomplete="given-name" id="fname" type="text">
</div>
<div>
<label for="mname">Middle name:</label> <span>(required)</span>
<input autocomplete="additional-name" id="mname" type="text">
</div>
<div>
<label for="lname">Last name:</label> <span>(required)</span>
<input aria-required="true" autocomplete="family-name" id="lname" type="text">
</div>
<div>
<label for="email">Email address:</label> <span>(required)</span>
<input aria-required="true" autocomplete="email" id="email" type="text">
</div>
<div>
<label for="zip_post">Zip / Postal code:</label> <span>(required)</span>
<input aria-required="true" autocomplete="postal-code" id="zip_post" type="text">
</div>
<div>
<input type="submit" value="Next Step">
</div>
</form>
Los campos obligatorios se indican con un borde rojo alrededor de los campos y un icono de estrella generado mediante CSS con ::after
Este ejemplo usa botones de opción personalizados con role=radio. Las propiedades CSS están disponibles debajo del formulario.
<form>
<label data-required="true" for="acctnum">Account Number</label>
<input aria-required="true" id="acctnum" type="text">
<p data-required="true" id="radio_label">
Please send an alert when balance exceeds $3,000.
</p>
<ul aria-required="true" aria-labelledby="radio_label" role="radiogroup">
<li aria-checked="false" id="rb1" role="radio" tabindex="0">Yes</li>
<li aria-checked="false" id="rb2" role="radio" tabindex="-1">No</li>
</ul>
</form>
Definición de estilos CSS correspondiente a este ejemplo:
[aria-required=true] {
border: red thin solid;
}
[data-required=true]::after {
content: url('/iconStar.gif');
}
Pruebas
Procedimiento
Para cada control que se muestra como obligatorio mediante la presentación.
- Comprobar si está presente el atributo
aria-required: - Comprobar si el valor del atributo
aria-requiredse corresponde con el estado de obligatoriedad correcto del componente de la interfaz de usuario.
Resultados esperados
- Las comprobaciones n.º 1 y n.º 2 son verdaderas
Recursos
- WAI-ARIA Overview (introducción a WAI-ARIA).
- WAI-ARIA Authoring Practices Guide (guía de prácticas de autor de WAI-ARIA).
- aria-required=true: WCAG 2 Compliance versus Best Practice (artículo de Deque sobre conformidad con las WCAG 2 frente a buenas prácticas).
Cómo lo comprobamos en ADDAW
En cada auditoría de ADDAW revisamos esta técnica página a página y le entregamos los errores con capturas y la forma de corregirlos.
Basado en la técnica ARIA2 del W3C (WCAG 2.2). Explicación y ejemplos: ADDAW. Traducción no oficial del texto del W3C © W3C, licencia de documentos del W3C. ¿Ha visto un error? Escríbanos.