form-control-single-label
Los controles de formulario no deben tener varias etiquetas
Comprueba que un control de formulario esté asociado con, como máximo, un <label> (por envoltura o mediante label[for]).
Ámbito de aplicación. Se aplica a los controles de formulario etiquetables (input, excluyendo hidden/submit/reset/button/image; select; textarea).
Resultado esperado. Como máximo un <label> que pueda contribuir al nombre accesible del control está asociado con él, ya sea envolviéndolo o mediante un <label for="..."> en su id (una etiqueta que tanto envuelve como se autorreferencia mediante for cuenta una sola vez). Se califica según si las etiquetas sobrantes compiten por el nombre:
- `pass` cuando una anulación (aria-labelledby / aria-label) sustituye a todos los <label> nativos: en ese caso las etiquetas no contribuyen en nada al nombre, por lo que no pueden ser ambiguas. Un desajuste entre la etiqueta visible y el nombre es competencia del SC 2.5.3 Label in Name, no de esta regla.
- `fail` cuando dos o más etiquetas no vacías compiten y no hay anulación: los lectores de pantalla anuncian un subconjunto no determinista.
- `cantTell` cuando una etiqueta no vacía se une a alguna asociación de etiqueta vacía y no hay anulación: el nombre normalmente se resuelve en la etiqueta real, pero el manejo de la asociación vacía no está garantizado en todos los agentes de usuario.
Las asociaciones todas vacías sin anulación son un caso de nombre ausente (la regla hermana mencionada abajo), no una ambigüedad, por lo que esta regla permanece en silencio.
Ejemplos
<label>Name <input type="text"></label>
Una única etiqueta envolvente; solo se aplica un mecanismo de etiquetado.
<label for="address">Address</label><label for="address">Mailing address</label><input id="address" type="text">
Dos elementos `label[for]` separados apuntan ambos al mismo control.