Addaw, ir a inicio Donar

Fallo común WCAG 2.2

F9Formularios que se envían o cambian de página al salir de un campo

Nombre oficial en el W3C: Fallo del criterio de conformidad 3.2.5 debido a cambiar el contexto cuando el usuario retira el foco de un elemento de formulario

En pocas palabras

Este error ocurre cuando la página cambia por sorpresa al salir de un campo de formulario. Por ejemplo, envía el formulario, abre una ventana nueva o lleva a otra página. Pasa al pulsar Tab para ir al campo siguiente o al hacer clic fuera. Esos cambios solo deben ocurrir cuando la persona los pide, por ejemplo con un botón.

Por qué es importante

Quien usa el teclado sale de cada campo con Tab, simplemente para avanzar. Si en ese momento el formulario se envía, lo hace a medias y la persona no sabe qué ha pasado.

Quien usa un lector de pantalla puede perder el hilo cuando la página cambia de repente. Las personas con dificultades cognitivas o que necesitan repasar lo escrito también se desorientan. El criterio 3.2.5 (nivel AAA) pide que estos cambios solo ocurran a petición del usuario.

Cómo evitarlo

  1. Envíe el formulario solo con un botón de envío (<button type="submit">).
  2. No asocie a los eventos blur o focusout acciones como form.submit(), window.open() o un cambio de location.
  3. Al salir de un campo sí puede revisar lo escrito y mostrar un aviso de error junto a él. Eso no cambia de página ni mueve el foco.
  4. Si la página debe actualizarse con lo elegido, como los filtros de un buscador, añada un botón «Aplicar».

Cómo comprobarlo

  1. Rellene el formulario solo con el teclado. Pase de un campo a otro con Tab y Mayús+Tab.
  2. Compruebe que al salir de cada campo no se envía el formulario, no se abre otra ventana o pestaña y no se carga otra página.
  3. Repita la prueba con el ratón, haciendo clic fuera de cada campo.
  4. En el código, busque funciones asociadas a blur, focusout u onblur y revise qué hacen.

Ejemplo

Buscador de oficinas por código postal: primero el error y después la forma correcta.

<!-- Mal: al salir del campo se envía el formulario -->
<input id="cp" name="cp" onblur="this.form.submit()">

<!-- Bien: se envía solo al pulsar el botón -->
<label for="cp">Código postal</label>
<input id="cp" name="cp" autocomplete="postal-code">
<button type="submit">Buscar oficinas</button>
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 F9 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

General.

Descripción

Este documento describe un fallo que se produce cuando retirar el foco de un elemento de formulario, por ejemplo al pasar al elemento siguiente, provoca un cambio de contexto.

Ejemplos

Los usuarios recorren el formulario rellenando los campos en orden. Cuando pasan del tercer campo al cuarto, el formulario se envía.

Pruebas

Procedimiento

  1. Localizar todos los elementos de formulario.
  2. Recorrerlos en orden.
  3. Comprobar si el formulario se envía al pasar de un campo al siguiente.
  4. Comprobar si al pasar de un campo al siguiente se abre alguna ventana nueva.
  5. Comprobar si al pasar de un campo al siguiente se navega a otra pantalla.

Resultados esperados

  • Si la comprobación n.º 3, el paso n.º 4 o el paso n.º 5 son verdaderos, se da esta condición de fallo y el contenido falla el criterio de conformidad.

Cómo lo comprobamos en ADDAW

Este error es uno de los que buscamos en cada auditoría de ADDAW. Se lo entregamos con capturas y la forma de corregirlo.

Solicitar una auditoría

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