Normativas · ARIA

Rol Punto de referencia

form

Un punto de referencia para un formulario — un conjunto de controles de entrada que envían datos. Un elemento <form> se expone como punto de referencia de formulario ÚNICAMENTE cuando tiene un nombre accesible. Sin nombre, es simplemente un formulario, no un punto de referencia.

Cuándo utilizarlo

Para formularios sustantivos — registro, pago, contacto, edición de perfil — que merezcan ser navegados como punto de referencia. Al igual que region, el elemento <form> se promueve a punto de referencia de formulario ÚNICAMENTE cuando dispone de un nombre accesible (aria-label o aria-labelledby).

El nombre accesible del formulario debe describir su propósito: «Formulario de contacto», «Registro», «Editar perfil». Se debe evitar el genérico «Formulario», que resulta redundante con el anuncio del rol.

Si el formulario es de búsqueda, se debe usar <search> (o role="search") en su lugar, ya que el punto de referencia de búsqueda es más específico.

Un formulario de suscripción con un único campo o un cuadro de búsqueda no justifica el uso del punto de referencia de formulario. Conviene reservarlo para formularios con tres o más entradas significativas y un propósito claro.

Cuándo añadir una etiqueta

Siempre — sin nombre, el elemento <form> no se convierte en punto de referencia. Cuando una página contiene varios formularios (un formulario de comentarios Y una suscripción al boletín), cada uno DEBE tener un nombre distinto.

Se prefiere aria-labelledby apuntando a un encabezado visible frente a aria-label, ya que asocia el título visible con el anuncio del punto de referencia.

Errores frecuentes

  • <form> sin aria-label ni aria-labelledby. No es un punto de referencia. Los usuarios no pueden saltar a él mediante la navegación por puntos de referencia.
  • aria-label="Formulario" — redundante.
  • Usar <form role="search"> y además aria-label="Búsqueda". El punto de referencia de búsqueda ya lo cubre; el rol de formulario generaría conflicto.
  • Formularios de acceso e inicio de sesión etiquetados ambos como «Iniciar sesión» — indistinguibles en el menú de puntos de referencia.
  • Envolver un único campo en <form> y etiquetarlo como punto de referencia de formulario. Uso excesivo; el punto de referencia no aporta valor.

Ejemplo

<form aria-labelledby="contactHeading">
  <h2 id="contactHeading">Contáctenos</h2>
  <label>Nombre <input type="text" name="name" required></label>
  <label>Correo electrónico <input type="email" name="email" required></label>
  <label>Mensaje <textarea name="message" required></textarea></label>
  <button type="submit">Enviar</button>
</form>