He buscado por los foros pero no he encontrado algun post que trate este tema. Vamos a ponernos en situación:
Quiero tener un formulario con checkbox ocultos que funcionen exactamente igual que visibles. Un código de ejemplo es el siguiente:
Código:
En firefox funciona perfectamente. Se lanza el evento "onclick" del checkbox y al enviar el formulario aparecen los parametros activos en la url.<form name="test1" method="get" action=""> <input type="checkbox" id="cas1" name="cas1" style="display: none" onclick="alert('click casilla 1')"> <label for="cas1">Label 1</label><br /> <input type="checkbox" id="cas2" name="cas2" onclick="alert('click casilla 2')"> <label for="cas2">Label 2</label><br /> <input type="submit" value="Envia"> </form>
En ie6 no se activa el onclick y el envío del formulario generalmente no me pasa los parámetros por URL, aunque alguna vez parece que sí ha funcionado.
Después de muchas pruebas, he optado por realizar un workarround compatible con FF y ie6 (sin document.all ni cosas así), de manera que el código web pasa a ser:
Código:
Así funciona correctamente en FF y ie6, no sé en el resto de navegadores, pero pierdo el uso de label for="".<form name="test2" method="get" action=""> <input type="checkbox" id="cas3" name="cas3" style="display: none"> <span onclick="canvia_class('3')">Label 1</span><br /> <input type="checkbox" id="cas4" name="cas4"> <span onclick="canvia_class('4')">Label 2</span><br /> <input type="submit" value="Envia"> </form> <script type="text/javascript"> function canvia_class(id){ var estat=document.getElementById('cas'+id).checked; if (estat==true){ document.getElementById('cas'+id).checked=false; }else{ document.getElementById('cas'+id).checked=true; } alert('click casilla '+id); } </script>
Imagino que la mejor solución sería implementar algun script no intrusivo en mi página, pero de momento no tengo intención de hacerlo. Sin embargo, existe alguna forma mejor de plantear esto, por ejemplo manteniendo las etiquetas label? Como lo haría alguno de los cracks de foros del web?
Muchas gracias de antemano!
xavi