Addaw, ir a inicio Donar

Técnica HTML WCAG 2.2

H91Usar controles de formulario y enlaces de HTML

En resumen

Esta técnica recomienda construir enlaces y controles de formulario con los elementos nativos de HTML (a, button, input, select, textarea) en lugar de recrearlos con etiquetas genéricas. Así el navegador ya aporta el manejo con teclado y expone nombre, función, estado y valor a los lectores de pantalla sin trabajo adicional. Úsela siempre que necesite un control interactivo estándar.

Aplicabilidad

Controles de formulario y enlaces de HTML

Descripción

El objetivo de esta técnica es usar los controles de formulario y los elementos de enlace estándar de HTML para proporcionar el manejo con teclado y la interoperabilidad con las tecnologías de asistencia de los elementos interactivos de la interfaz de usuario.

Los agentes de usuario proporcionan el manejo con teclado de los controles de formulario y los enlaces de HTML. Además, el agente de usuario asigna los controles de formulario y los enlaces a una API de accesibilidad. Las tecnologías de asistencia utilizan la API de accesibilidad para extraer la información de accesibilidad pertinente, como la función, el nombre, el estado y el valor, y presentarla a los usuarios. La función la proporciona el elemento HTML y el nombre lo proporciona el texto asociado a ese elemento. Los elementos para los que tienen sentido valores y estados también los exponen mediante varios mecanismos.

En algunos casos, el texto ya está asociado al control mediante un atributo obligatorio. Por ejemplo, los botones de envío utilizan como nombre el texto del elemento button o el atributo alt de la imagen. En el caso de los controles de formulario, se utilizan los elementos label, las propiedades aria-label o aria-labelledby, o el atributo title.

Ejemplos

Enlaces

Los agentes de usuario proporcionan mecanismos para desplazarse hasta los enlaces y seleccionarlos. En cada uno de los ejemplos siguientes, la función es «link» (enlace) porque el elemento a tiene un atributo href. Un elemento a sin href no es un enlace. El valor del enlace es el URI del atributo href.

Ejemplo A de enlace

En el ejemplo A, el nombre es el texto que hay dentro del enlace, en este caso «Example Site» (sitio de ejemplo).

<a href="https://example.com">Example Site</a>

Ejemplo B de enlace

En el ejemplo B, de una imagen dentro de un enlace, el atributo alt de la imagen proporciona el nombre.

<a href="https://example.com"><img alt="Example" src="example-logo.gif"></a>

Ejemplo C de enlace

En el ejemplo C, algunas tecnologías de asistencia no insertan automáticamente un espacio al concatenar el texto alt de la imagen con el texto del enlace. Si el texto no debe concatenarse sin espacio, lo más seguro es insertar un espacio entre la imagen y la palabra adyacente para que las palabras no queden pegadas.

<a href="https://example.com"><img alt="Example " src="example_logo.gif">Text</a>

Botones

Hay varias formas de crear un botón en HTML.

Ejemplo A de botones

En el ejemplo A, el texto contenido en el elemento button, en este caso «save» (guardar), da su nombre al botón. No hay valor.

<button type="button">Save</button>

Ejemplo B de botones

El ejemplo B utiliza como nombre el atributo value, en este caso «Save» (guardar), «Submit» (enviar) o «Reset» (restablecer).

<input type="button" value="Save"> 
<input type="submit" value="Submit">
<input type="reset" value="Reset">

Ejemplo C de botones

El ejemplo C utiliza como nombre el atributo alt, en este caso «save» (guardar).

<input alt="save" src="save.gif" type="image">

Ejemplo D de botones

El ejemplo D aclara cómo determina el agente de usuario el nombre cuando el autor especifica a la vez los atributos alt y title del elemento input. En este caso, el agente de usuario utiliza el atributo alt («Save») e ignora el atributo title.

<input alt="save" src="save.gif" title="save the file" type="image">

Campo de texto

Ejemplo A de campo de texto

En el ejemplo A, el campo de entrada tiene la función «editable text» (texto editable). El elemento label está asociado al elemento input mediante el atributo for, que hace referencia al atributo id del elemento input. El nombre proviene del elemento label, en este caso «Type of fruit» (tipo de fruta). Su valor proviene de su atributo value, en este caso «bananas» (plátanos).

<label for="text-1">Type of fruit</label>
<input id="text-1" type="text" value="bananas">

Ejemplo B de campo de texto

En el ejemplo B, el campo de entrada tiene la misma función que en el ejemplo A, pero el valor es la cadena vacía y el campo obtiene su nombre de la propiedad aria-label.

<input aria-label="Type of fruit" id="text-1" type="text">

Casilla de verificación

Este ejemplo tiene la función checkbox, que proviene del atributo type del elemento input. El elemento label está asociado al elemento input mediante el atributo for, que hace referencia al atributo id del elemento input. El nombre proviene del elemento label, en este caso «cheese» (queso). Su estado puede ser checked o unchecked y proviene del atributo checked. El estado puede cambiar con la interacción del usuario con el control.

<label for="cb-1">Cheese</label> 
<input checked id="cb-1" type="checkbox">

Botones de opción

Este ejemplo tiene la función «radio button» (botón de opción), que proviene del atributo type del elemento input. Su nombre proviene del elemento label. Su estado puede ser checked o unchecked y proviene del atributo checked. El estado puede cambiar con la interacción del usuario con el control.

<input checked id="r1" name="color" type="radio"><label for="r1">Red</label>
<input id="r2" name="color" type="radio"><label for="r2">Blue</label>
<input id="r3" name="color" type="radio"><label for="r3">Green</label>

Fieldset de botones de opción

El fieldset de botones de opción tiene la función «grouping» (agrupación). El nombre proviene del elemento legend.

<fieldset>
  <legend>Choose a Color:</legend>
  <div>
    <input id="red" name="color" type="radio" value="red">
    <label for="red">Red</label>
  </div>
  <div>
    <input id="blue" name="color" type="radio" value="blue">
    <label for="blue">Blue</label>
  </div>
  <div>
    <input id="green" name="color" type="radio" value="green">
    <label for="green">Green</label> 
</fieldset>

Elemento select

Ejemplo A de elemento select

El ejemplo A tiene la función «list box» (cuadro de lista), que proviene del elemento select. Su nombre es «Numbers» (números) y proviene del elemento label. Olvidarse de dar un nombre al select es un error frecuente. El valor es el elemento option que tiene presente el atributo selected. En este caso, el valor predeterminado es «Two» (dos).

<label for="s1">Numbers</label>
<select id="s1">
  <option>One</option>
  <option selected>Two</option>
  <option>Three</option>
</select>

Ejemplo B de elemento select

El ejemplo B tiene el mismo nombre, función y valor que el anterior, pero establece el nombre con la propiedad aria-label en el elemento select. Esta técnica puede usarse cuando no es posible mostrar una etiqueta visible.

<select aria-label="Numbers" id="s1">
  <option>One</option>
  <option selected>Two</option>
  <option>Three</option>
</select>

Textarea

Ejemplo A de textarea

El ejemplo A tiene la función «editable text» (texto editable), que proviene del elemento textarea. El nombre es «Type your speech here» (escriba aquí su discurso) y proviene del elemento label. El valor es el contenido que hay dentro del elemento textarea, en este caso «Four score and seven years ago».

<label for="ta-1">Type your speech here</label>
<textarea id="ta-1">Four score and seven years ago</textarea>

Ejemplo B de textarea

El ejemplo B tiene la misma función y el mismo valor. El nombre se establece mediante el atributo title.

<textarea title="Type your speech here">Four score and seven years ago</textarea>

Pruebas

Procedimiento

  1. Inspeccionar el código fuente HTML.
  2. Para cada enlace y elemento de formulario, comprobar que se especifican el nombre, el valor y el estado.

Resultados esperados

  • La comprobación n.º 2 es verdadera.

Recursos

Cómo lo comprobamos en ADDAW

En las auditorías de accesibilidad de ADDAW revisamos cada criterio de conformidad siguiendo este catálogo de técnicas: comprobamos si la web aplica una técnica suficiente y documentamos cada fallo común con capturas y el código afectado, para que el equipo de desarrollo sepa exactamente qué corregir. Los informes siguen la metodología del Observatorio de Accesibilidad y la norma UNE-EN 301 549.

Solicitar una auditoría

Fuente y licencia

Traducción al español, no oficial, realizada por ADDAW a partir de la técnica H91 del documento «Techniques for WCAG 2.2» del W3C (versión del repositorio público del W3C a 22/10/2026). Copyright © W3C® (MIT, ERCIM, Keio, Beihang). Se publica conforme a la licencia de documentos del W3C. El texto normativo de referencia es el original en inglés; si detecta un error en la traducción, escríbanos.

Financiado por la unión europea Gobierno de españa red.es Plan de recuperación transformación y resilencia kit digital