Addaw, ir a inicio Donar

Técnica ARIA WCAG 2.2

ARIA17Agrupar campos relacionados con role="group" o role="radiogroup"

Nombre oficial en el W3C: Usar funciones (roles) de agrupación para identificar los controles de formulario relacionados

En pocas palabras

Algunos campos de un formulario solo tienen sentido juntos, como el día, el mes y el año de una fecha. Con role="group" se marcan como un grupo con nombre propio. Para opciones de las que se elige solo una, se usa role="radiogroup". Es una alternativa a fieldset y legend.

Por qué es importante

Quien ve el formulario entiende que «Día», «Mes» y «Año» forman la fecha de nacimiento. Quien usa un lector de pantalla recorre los campos de uno en uno. Sin grupo, oye «Día» y no sabe de qué fecha se trata.

Con el grupo, el lector anuncia su nombre al entrar, por ejemplo «Fecha de nacimiento, grupo». Así cada campo se entiende en su contexto.

Cómo se hace

  1. Si puede, use <fieldset> y <legend> (técnica H71). Esta técnica sirve cuando el diseño lo complica.
  2. Envuelva los campos relacionados en un contenedor con role="group".
  3. Si son opciones de las que solo se elige una, use role="radiogroup".
  4. Dé nombre al grupo con aria-labelledby, apuntando a su título visible, o con aria-label.
  5. Mantenga también una etiqueta para cada campo del grupo.
  6. No meta todo el formulario en un solo grupo. Agrupe solo lo que va junto.

Cómo comprobarlo

  1. Localice los conjuntos de campos que necesitan un título común para entenderse.
  2. Compruebe que están dentro de un elemento con role="group" o, si son opciones, con role="radiogroup".
  3. Compruebe que ese grupo tiene nombre con aria-labelledby o aria-label.
  4. Entre en el grupo con el tabulador y un lector de pantalla. Debe anunciar el nombre del grupo.

Ejemplo

Fecha de nacimiento en tres campos, agrupados bajo un mismo nombre.

<div role="group" aria-labelledby="tit-fecha">
  <p id="tit-fecha">Fecha de nacimiento</p>
  <label for="dia">Día</label>
  <input id="dia" inputmode="numeric" size="2">
  <label for="mes">Mes</label>
  <input id="mes" inputmode="numeric" size="2">
  <label for="anio">Año</label>
  <input id="anio" inputmode="numeric" size="4">
</div>
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 ARIA17 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 que admiten Accessible Rich Internet Applications (WAI-ARIA).

Descripción

El objetivo de esta técnica es marcar un conjunto de controles relacionados dentro de un formulario como un grupo. Cualquier etiqueta asociada al grupo sirve también como etiqueta común o calificador de cada uno de los controles del grupo. Las tecnologías de asistencia pueden indicar el inicio y el final del grupo, así como su etiqueta, a medida que se entra y se sale de él. Se trata de una alternativa viable para agrupar controles de formulario por software cuando el diseño de la interfaz de usuario dificulta emplear la técnica de fieldset / legend (H71).

Para un grupo de botones de opción debe usarse role="radiogroup" en lugar de role="group".

El grupo puede etiquetarse mediante aria-labelledby.

Esta técnica no está pensada para envolver todos los controles de un formulario dentro de un único contenedor con role="group".

Ejemplos

Número de la seguridad social

Los campos de un número de la seguridad social, que tiene nueve dígitos y se divide en tres segmentos, pueden agruparse mediante role="group".

<div role="group" aria-labelledby="ssn1">
  <span id="ssn1">Social Security Number</span> 
  <span style="color: #D90D0D;"> (required)</span>
  <input size="3" type="text" aria-required="true" title="First 3 digits">-
  <input size="2" type="text" aria-required="true" title="Next 2 digits">-
  <input size="4" type="text" aria-required="true" title="Last 4 digits">
</div>

Ejemplo funcional: Grupos de campos de varias partes.

Identificar grupos de botones de opción

Este ejemplo muestra el uso de role=radiogroup. Observe también que los botones de opción son controles personalizados con role=radio. Opcionalmente, puede emplearse CSS para colocar un borde alrededor de los grupos de estos campos y reforzar visualmente la relación de grupo. Las propiedades CSS están disponibles debajo del formulario.

<h3>Set Alerts for your Account</h3>
<div role="radiogroup" aria-labelledby="alert1">
  <p id="alert1">Send an alert when balance exceeds $3,000</p>
  <div>
    <span role="radio" aria-checked="false" aria-labelledby="a1r1" name="a1radio"></span>
    <span id="a1r1">Yes</span>
  </div>
  <div>
    <span role="radio" aria-checked="false" aria-labelledby="a1r2" name="a1radio"></span>
    <span id="a1r2">No</span>
  </div>
</div>
<div role="radiogroup" aria-checked="false" aria-labelledby="alert2">
  <p id="alert2">Send an alert when a charge exceeds $250</p>
  <div>
    <span role="radio" aria-checked="false" aria-labelledby="a2r1" name="a2radio"></span>
    <span id="a2r1">Yes</span>
  </div>
  <div>
    <span role="radio" aria-checked="false" aria-labelledby="a2r2" name="a2radio"></span>
    <span id="a2r2">No</span>
   </div>
</div>
<input type="submit" value="Continue" name="continue_btn">

Definición de estilo CSS relacionada para colocar un borde alrededor del grupo de campos:

div[role=radiogroup] {
  border: black thin solid;
}

Ejemplo funcional: usar funciones de agrupación para identificar controles de formulario relacionados.

El script necesario para que los span funcionen realmente como botones de opción no se incluye en este ejemplo. Para un ejemplo funcional similar, aunque codificado de forma ligeramente distinta, consulte el ejemplo Radio Group Example Using aria-activedescendant (ejemplo de grupo de botones de opción con aria-activedescendant) de las ARIA Authoring Practices.

Pruebas

Procedimiento

Para los grupos de controles relacionados en los que las etiquetas individuales de cada control no proporcionan una descripción suficiente y se necesita una descripción adicional a nivel de grupo:

  1. Comprobar que el grupo de elementos input o select relacionados lógicamente está contenido dentro de un elemento con role=group o role=radiogroup, según el tipo de elementos que contenga el grupo.
  2. Comprobar que este grupo tiene un nombre accesible definido mediante aria-label o aria-labelledby.

Resultados esperados

  • Las comprobaciones n.º 1 y n.º 2 son verdaderas.

Recursos

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.

Solicitar una auditoría

Basado en la técnica ARIA17 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.