Agrupar controles usando ARIA
Si por algún motivo no puedes usar fieldset
y legend
para agrupar controles de formulario puedes usar la alternativa ARIA, en inglés: Accessible Rich Internet Applications.
Ejemplo para opciones de botón
<div role="radiogroup" aria-labelledby="etiqueta-frutas-1">
<span id="etiqueta-frutas-1">Fruta favorita</span>
<div>
<input
type="radio"
name="fruta"
id="fruta-1"
value="manzana"
>
<label for="fruta-1">Manzana</label>
</div>
<div>
<input
type="radio"
name="fruta"
id="fruta-2"
value="sandia"
>
<label for="fruta-2">Sandía</label>
</div>
</div>
El valor de aria-labelledby
debe ser único en la página e igual al valor del atributo id
al cual está asociado.
Ejemplo para casillas de verificación
<div role="group" aria-labelledby="etiqueta-frutas-2">
<span id="etiqueta-frutas-2">Fruta favorita</span>
<div>
<input
id="fruta-3"
type="checkbox"
value="manzana"
>
<label for="fruta-3">Manzana</label>
</div>
<div>
<input
id="fruta-4"
type="radio"
value="sandia"
>
<label for="fruta-4">Sandía</label>
</div>
</div>