Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Marcar / Desmarcar Todos los Checkbox de un Formulario

Estas en el tema de Marcar / Desmarcar Todos los Checkbox de un Formulario en el foro de Javascript en Foros del Web. Buenas Tengo un formulario a través del cual con php saco los resultados de una tabla en mysql y con un bucle la voy recorriendo ...
  #1 (permalink)  
Antiguo 14/02/2013, 07:01
 
Fecha de Ingreso: mayo-2008
Mensajes: 156
Antigüedad: 15 años, 11 meses
Puntos: 0
Marcar / Desmarcar Todos los Checkbox de un Formulario

Buenas

Tengo un formulario a través del cual con php saco los resultados de una tabla en mysql y con un bucle la voy recorriendo y creando checkbox.

Tengo un checkbox que al marcarlo/desmarcarlo, selecciona/deselecciona todos los checkbox, pero para algo "raro" y es que si empiezo el <form> dejando fuera un input type submit (o button), si hace el script bien su función. Sin embargo, si lo meto dentro del <form>, solo deselecciona los seleccionados pero no lo al contrario.

Como ese submit solo aparece si se da una condición en php, creo que por ahi viene el error, pero a la vez no se como arreglarlo.

Dejo el ejemplo de como lo hace mal y a continuación como lo hace bien:

Así mal: Solo deselecciona

Código Javascript:
Ver original
  1. <script language="javascript" type="text/javascript">
  2.     function selectall(form)  
  3.     {  
  4.      var formulario = eval(formu)  
  5.      for (var i=0, len=formulario.elements.length; i<len ; i++)  
  6.       {  
  7.         if ( formulario.elements[i].type == "checkbox" )  
  8.           formulario.elements[i].checked = formulario.elements[0].checked  
  9.       }  
  10.     }  
  11. </script>
  12. <form action="bbb.php" method="post" name="formu">
  13.         <?php
  14.         if($nomscript!="aaa.php"))
  15.         {
  16.             ?><input type="submit" value="Borrar">
  17.             <?php
  18.         }//fin distinto a nuevo o leer
  19.         ?>
  20. <table class="xxx">
  21. <tr class="xxx">
  22.     <td><input type="checkbox" onclick="selectall(document.forms[0])" /></td>
  23.     <td>Valor</td>
  24. </tr>
  25.  
  26. <?php
  27.  
  28. /*Parte de consulta a la base de datos para sacar la query*/
  29. /*con la query el bucle siguiente que crea el resto de checkbox*/
  30. while ($query)
  31. {
  32.   ?>
  33.   <tr>
  34.                 <td><input name="msjselect[]" type="checkbox" value="<?php echo"$id"; ?>" /></td>
  35.                 <td><?php echo"$id"; ?></td>
  36.   </tr>
  37.   <?php
  38. }
  39. </table>
  40. </form>

Para que si haga la función se arregla o quitando el bucle del principio, es decir quitando que segun el nombre del script.php salga o no salga el submit o dejandolo fuera del form (que viene a ser lo mismo)

Pero claro no se si es posible que estando ese botón según el nombre del script, pues cargue bien javascript

Gracias, saludos
  #2 (permalink)  
Antiguo 14/02/2013, 07:44
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Marcar / Desmarcar Todos los Checkbox de un Formulario

Amigo, no entiendo nada
Primero debería poner el html generado no el php
Luego, que el submit aparezca dentro o fuera del for, o que no aparezca da exactamente lo mismo.. y eso de hacerle un eval() al formulario?
A ver

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6.  
  7. <script type="text/javascript">
  8. //<![CDATA[
  9. function marcar_desmarcar(){
  10. var marca = document.getElementById('marcar');
  11. var cb = document.getElementsByName('nombre[]');
  12.  
  13. for (i=0; i<cb.length; i++){
  14. if(marca.checked == true){
  15. cb[i].checked = true
  16. }else{
  17. cb[i].checked = false;
  18. }
  19. }
  20.  
  21. }
  22. //]]>
  23.  
  24. </head>
  25. <form action="#">
  26.     <p>
  27. marcar/desmarcar <input type="checkbox" id="marcar" value="" onclick="marcar_desmarcar();" /><br /><br />
  28. <input type="checkbox" name="nombre[]" value="a" />
  29. <input type="checkbox" name="nombre[]" value="b" />
  30. <input type="checkbox" name="nombre[]" value="c" />
  31. <input type="checkbox" name="nombre[]" value="d" />
  32. </p>
  33.  
  34. </form>
  35.  
  36. <input type="submit" value="procesar" />
  37. </body>
  38. </html>

Poné el submit dónde quieras o quitalo, dá lo mismo, la función es de javascript y se llama desde el checkbox indicado (id="marca")

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 15/02/2013, 05:19
 
Fecha de Ingreso: mayo-2008
Mensajes: 156
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Marcar / Desmarcar Todos los Checkbox de un Formulario

Cita:
Iniciado por emprear Ver Mensaje
Amigo, no entiendo nada
Primero debería poner el html generado no el php
Luego, que el submit aparezca dentro o fuera del for, o que no aparezca da exactamente lo mismo.. y eso de hacerle un eval() al formulario?
A ver

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6.  
  7. <script type="text/javascript">
  8. //<![CDATA[
  9. function marcar_desmarcar(){
  10. var marca = document.getElementById('marcar');
  11. var cb = document.getElementsByName('nombre[]');
  12.  
  13. for (i=0; i<cb.length; i++){
  14. if(marca.checked == true){
  15. cb[i].checked = true
  16. }else{
  17. cb[i].checked = false;
  18. }
  19. }
  20.  
  21. }
  22. //]]>
  23.  
  24. </head>
  25. <form action="#">
  26.     <p>
  27. marcar/desmarcar <input type="checkbox" id="marcar" value="" onclick="marcar_desmarcar();" /><br /><br />
  28. <input type="checkbox" name="nombre[]" value="a" />
  29. <input type="checkbox" name="nombre[]" value="b" />
  30. <input type="checkbox" name="nombre[]" value="c" />
  31. <input type="checkbox" name="nombre[]" value="d" />
  32. </p>
  33.  
  34. </form>
  35.  
  36. <input type="submit" value="procesar" />
  37. </body>
  38. </html>

Poné el submit dónde quieras o quitalo, dá lo mismo, la función es de javascript y se llama desde el checkbox indicado (id="marca")

Saludos
Muchas gracias, me ha servido y ya está implementado.

Quité información que creia que iba a ser irrelevante en el contenido de mi primer mensaje como etiquetas <html> o la consulta en php a la base de datos. Está claro que error venía de ese script en javascript, y como digo gracias de nuevo

Etiquetas: checkbox, formulario, input, js, marcar, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:00.