Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/06/2012, 11:00
rbczgz
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 6 meses
Puntos: 154
Respuesta: Validar que se seleccione minimo un checkbox

Hola a tod@s,

Escribo esto aquí porque considero que no es necesario abrir otro tema, dado que mi consulta está directamente relacionada con esto.

El asunto es que yo utilizo el script que ha propuesto emprear (mil gracias), pero yo lo uso en el botón, con el evento onclick porque hay varias opciones, pongo el código y luego lo explico mejor:


El script de emprear (un poco modificado por los requerimientos):

Código Javascript:
Ver original
  1. <script languaje="javascript">
  2. function verificar_uno(){
  3. var suma = 0;
  4. var checks = document.getElementsByName('ids[]');
  5. for (var i = 0, j = checks.length; i < j; i++) {
  6.     if(checks[i].checked == true){
  7.     suma++;
  8.     }
  9. }
  10.  
  11. if(suma == 0){
  12.     alert('Debes seleccionar un registro');
  13.     return false;
  14. }
  15.  
  16. }
  17.  
  18. </script>

Un resumen del formulario:

Código PHP:
Ver original
  1. <form name="form" id="form" action="proceso.php" method="POST">
  2. <table>
  3. <tr>
  4.  
  5. <td><input type="checkbox" name="chkall" onclick="sel()"></td>
  6. <td>ID</td>
  7. <td>Nombre</td>
  8. <td>Apellidos</td>
  9. <td varios></td>
  10.  
  11. <?php
  12. //Aquí hago las consultas para generar la parte dinámica de la tabla
  13. ?>
  14.  
  15. <tr>
  16.  
  17. <td><input type="checkbox" id="ids" name="ids[]" value="<?php echo $row[0] ?>"></td>
  18. <td><?php echo $row[0] ?></td>
  19. <td><?php echo $row[1] ?></td>
  20. <td><?php echo $row[2] ?></td>
  21. <td varios> </td>
  22.  
  23. </tr>
  24.  
  25. <tr>
  26.  
  27. <td colspan="5">
  28. <blockquote><b>Acciones en Masa:</b></blockquote>
  29. <center>
  30. <input type="submit" name="submit" value="Borrar Usuarios" onclick="javascript:if(confirm('¿Realmente deseas eliminar los registros seleccionados? ')){document.forms['form'].submit();}">
  31. <input type="submit" name="submit" value="Añadir Usuarios">
  32. </div></center><br>
  33.  
  34. <blockquote><b>Acciones sobre un sólo miembro:</b></blockquote>
  35.  
  36. <center>
  37. <input type="submit" name="submit" value="Editar Usuario" [COLOR="Green"]onclick="return verificar_uno();"[/COLOR]>
  38. <input type="submit" name="submit" value="Borrar Usuario" onclick="javascript:[COLOR="Red"]return verificar_uno();if(confirm('¿Realmente deseas eliminar el registro seleccionado? ')){document.forms['form'].submit();}else{}[/COLOR]">
  39. <input type="submit" name="submit" value="Añadir Usuario">
  40. </div></center><br>
  41. </td>
  42. </tr>
  43. </table>
  44. </form>

Bien, como podéis ver, es una tabla que se genera con los registros de una base de datos, teniendo cada registro un checkbox para realizar las acciones necesarias.

La parte de validaciones en PHP no hay problema, pero lo que pretendo es también validar mediante JavaScript antes del envío.

Si sólo utilizo la función del script de emprear, (lo que he puesto en verde) funciona perfectamente.

El problema es cuando intento utilizar la función junto con otra validación (lo que está en rojo), ahí me funciona la validación de comprobar que se ha seleccionado un check pero no actúa la otra comprobación (if(confirm('¿Realmente deseas eliminar el registro seleccionado? ')){document.forms['form'].submit();}else{}), es decir, envía el formulario directamente.

No respeta los colores dentro del código pero creo que se entiende igual...

Entonces la pregunta es:

¿Qué puede estar pasando para que sólo actúe la primera validación y cómo se puede resolver?

Agradeceré cualquier ayuda. Muchas gracias por anticipado.