Ver Mensaje Individual
  #5 (permalink)  
Antiguo 07/06/2012, 14:25
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Validar que se seleccione minimo un checkbox

@rbczgz
Creo que estás complicándote un poco
El form está un poco imperfecto, pero creo que la idea a aplicar es esta

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. <script languaje="javascript">
  7.  
  8. function verificar_uno(param){
  9. var cuales = param;
  10. var suma = 0;
  11. var marcando;
  12. var checks = document.getElementsByName('ids[]');
  13. for (var i = 0, j = checks.length; i < j; i++) {
  14.  
  15.  
  16.    // sumar los marcados
  17.   if(checks[i].checked == true){
  18.    suma++;
  19.    }
  20.    
  21. // marcar desmarcar todos (la función recibe un parámetro  
  22.    if(cuales == 'todos'){
  23.    checks[i].checked = true;
  24.     marcando = 1; // ponemos marcando en 1 para saber que no nos interesa procesar el form por ahora
  25.     }
  26.    
  27.    if(cuales == 'nada'){
  28.    checks[i].checked = false;
  29.     marcando = 1;
  30.     }
  31.  
  32. }
  33.  
  34.  
  35.  
  36. if(marcando != 1){
  37.  
  38. // si no sumo suma = 0, entonces
  39.     if(suma == 0){
  40.    alert('Debes seleccionar un registro');
  41.    return false;
  42.     }else{
  43.     //Confirmación para uno o varios   
  44.         if(suma == 1){
  45.         var texto = 'el usuario seleccionado';
  46.         }else{
  47.         var texto = 'los usuarios seleccionados';
  48.         }
  49.     var pregunta = confirm("¿Realmente deseas eliminar " + texto +"?")
  50.     if(pregunta){
  51.     // no haces nada y el form se procesa
  52.     }else{
  53.     alert('Operación cancelada');
  54.     // cancelas el envío
  55.     return false;
  56.     }
  57.    
  58.     }
  59.    
  60. }
  61.    
  62.    
  63. }
  64.  
  65.  
  66. </head>
  67. <form name="form" id="form" action="proceso.php" method="POST" onsubmit="return verificar_uno()">
  68. <tr>
  69.  
  70. <td>marcar todos<input type="radio" name="marcar" id="todos" onclick="verificar_uno(this.id)">desmarcar todos<input type="radio" name="marcar" id="nada" onclick="verificar_uno(this.id)"> </td>
  71. <td>ID</td>
  72. <td>Nombre</td>
  73. <td>Apellidos</td>
  74. <td varios></td>
  75.  
  76. <?php
  77. //Aquí hago las consultas para generar la parte dinámica de la tabla
  78. ?>
  79.  
  80. <tr>
  81.  
  82. <td><input type="checkbox" id="ids" name="ids[]" value="<?php echo $row[0] ?>"></td>
  83. <td><input type="checkbox" id="ids2" name="ids[]" value="<?php echo $row[0] ?>"></td>
  84. <td> </td>
  85.  
  86. </tr>
  87.  
  88. <tr>
  89.  
  90. <td colspan="5">
  91. <center>
  92. <input type="submit" name="submit" value="Eliminar seleccionados">
  93. <input type="submit" name="submit" value="Añadir Usuario">
  94. </div></center><br>
  95. </td>
  96. </tr>
  97. </form>
  98.  
  99. </body>
  100. </html>

Como se supone que cada fila de usuario tiene su propio checkbox para habilitarlo, manejás todo con un solo botón sumbit, y el evento se define en el form, la función marcar /desmarcar, está integrada en verificar_uno(), salvo que en ese caso se le pasa un parámetro desde el click de los radiobuttons, en ese caso el submit no se hace. faltaría definir para que sirve "añadir usuario"

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.