Cuando trabajamos desarrollando interfaces web, al igual que ocurre con cualquier otro diseño de interfaz, una de las labores básica es aumentar la usabilidad. Hay que hacer fácil y natural el funcionamiento.
Si tenemos un formulario, con una lista con botones de tipo radio o checkbox y al lado una serie de etiquetas label como aparece en la imagen:
Hacer esto a mano, elemento a elemento, además de tedioso no es nada práctico, pero jQuery nos proporciona un método para hacerlo de una sola vez:
var labelID; $('label').click(function() { labelID = $(this).attr('for'); $('#'+labelID).trigger('click'); });
Recordad tener bien indicados el atributo for de cada label:
<label for="miboton"&mt;Mi botón</label&mt; <input id="miboton"&mt;...
https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.
Ver comentarios
Una solución más sencilla es usar algo del tipo
Mi boton
Mira mi respuesta de arriba.
No es necesario usar jQuery.. funciona igual.. tanto usando el "for" como poniendo el input dentro del label como dice Andrés.
Usando el for sólo depende en qué navegador, a mí al menos no me funciona, ¿o te refieres a poner el evento clic en el label? Eso es básicamente lo que hago.
Si no incluyo el dentro del es porque el W3C lo desaconseja y depende en qué navegador he tenido problemas.