Foros del Web » Programando para Internet » Javascript »

Contar el numero de checkbox activos

Estas en el tema de Contar el numero de checkbox activos en el foro de Javascript en Foros del Web. hola amigos del espero me puedan ayudar estoy enviando un formulario mediante ajax y necesito saber el Contar el numero de checkbox activos. tengo el ...
  #1 (permalink)  
Antiguo 21/04/2012, 14:28
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Contar el numero de checkbox activos

hola amigos del espero me puedan ayudar

estoy enviando un formulario mediante ajax y necesito saber el Contar el numero de checkbox activos.

tengo el siguiente codigo

Código Javascript:
Ver original
  1. $.ajax({
  2.                   url:'archivo.php',
  3.                   type:'post',
  4.                   data:{ nombre: nombre,
  5.                    
  6.                   }

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. function calcular(obj, opc){
  3.     if(opc==1)
  4.         obj.checked = (document.getElementById("chk_todos").checked==true)?true:false;
  5.     var val = (obj.checked == true)? obj.id.split("_")[1] : 0;
  6.     obj.value = val;
  7.     //document.getElementById("text_"+ obj.id.split("_")[1]).value = val;
  8.    
  9. }
  10.  
  11. function calcularTodos(){
  12.     for(var i = 0 ; i < document.getElementsByName("chk").length; i++)
  13.         calcular(document.getElementsByName("chk")[i], 1);
  14.        
  15.        
  16.        
  17. }
  18.  
  19. </script>
  20.  
  21. [HIGHLIGHT="HTML"]
  22.  
  23. <form>
  24.     <label for="name">Nombre</label>
  25.         <input type="text" name="nombre" id="nombre" class="text ui-widget-content ui-corner-all" />
  26. <table width="747" border="0" id="users" >
  27.   <tr>
  28.     <td width="244"><label>
  29.       <input type="checkbox" name="chk" value="1" id="chk" onclick='calcular(this,0);'/>
  30.       Opcion 1
  31.     </label></td>
  32.     </tr>
  33.   <tr>
  34.     <td><label>
  35.       <input type="checkbox" name="chk" value="4" id="chk" onclick='calcular(this,0);'/>
  36.       Opcion  2 </label></td>
  37.     </tr>
  38.   <tr>
  39.     <td><label>
  40.       <input type="checkbox" name="chk" value="7" id="chk" onclick='calcular(this,0);'/>
  41.       Opcion 3 </label></td>
  42.     </tr>
  43.   <tr>
  44.     <td><label>
  45.       <input type="checkbox" name="chk" value="10" id="chk" onclick='calcular(this,0);'/>
  46.       Opcion 3</label></td>
  47.     </tr>
  48.   <tr>
  49.     <td><label>
  50.       <input type="checkbox" name="chk" value="13" id="chk" onclick='calcular(this,0);'/>
  51.       Opcion 3</label></td>
  52.     </tr>
  53.   <tr>
  54.     <td><label>
  55.       <input type="checkbox" name="chk" value="16" id="chk" onclick='calcular(this,0);'/>
  56.       Opcion 3</label></td>
  57.     </tr>
  58.   <tr>
  59.     <td><label>
  60.       <input type="checkbox" name="chk" value="19" id="chk" onclick='calcular(this,0);'/>
  61.       Opcion 3</label></td>
  62.     </tr>
  63.   <tr>
  64.     <td><label>
  65.       <input type="checkbox" name="chk" value="22" id="chk" onclick='calcular(this,0);'/>
  66.       Opcion 3</label></td>
  67.     </tr>
  68.   <tr>
  69.     <td><label>
  70.       <input type="checkbox" name="chk" value="25" id="chk" onclick='calcular(this,0);'/>
  71.       Opcion 3</label></td>
  72.     </tr>
  73.   <tr>
  74.     <td><input type="checkbox" name="chk" value="28" id="chk" onclick='calcular(this,0);'/>
  75.       Opcion 3</td>
  76.     </tr>
  77.   <tr>
  78.     <td><input type="checkbox" name="chk" value="31" id="chk" onclick='calcular(this,0);'/>
  79.       Opcion 3</td>
  80.     </tr>
  81.   <tr>
  82.     <td><input type="checkbox" name="chk" value="34" id="chk" onclick='calcular(this,0);'/>
  83.       Opcion 3</td>
  84.     </tr>
  85.   <tr>
  86.     <td>&nbsp;</td>
  87.     </tr>
  88.   <tr>
  89.     <td><label>
  90.     <div align="center">
  91.       <input name="checkbox" type='checkbox' id='chk_todos' onclick="calcularTodos();" value="checkbox" />
  92.     </div>
  93.     </label>
  94.       <div align="center">todos</div></td>
  95.     </tr>
  96. </table>
  97.     </fieldset>
  98. </form>
[/HIGHLIGHT]
  #2 (permalink)  
Antiguo 21/04/2012, 16:32
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Contar el numero de checkbox activos

amigos logre contar los checkbox activos pero si todos tienen en mismo nombre, necesito el name diferente de cada checkbox para procesarlos al lado del servidor .

a continuacion expongo mi codigo espero me puedan ayudar

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. function calcular(obj, opc){
  3.     if(opc==1)
  4.         obj.checked = (document.getElementById("chk_todos").checked==true)?true:false;
  5.     var val = (obj.checked == true)? obj.id.split("_")[1] : 0;
  6.     obj.value = val;
  7.     //document.getElementById("text_"+ obj.id.split("_")[1]).value = val;
  8.    
  9. }
  10.  
  11. function calcularTodos(){
  12.     for(var i = 0 ; i < document.getElementsByName("checkbox").length; i++)
  13.         calcular(document.getElementsByName("checkbox")[i], 1);
  14.        
  15.        
  16.        
  17. }
  18.  
  19. </script>
  20.  
  21. <script type="text/javascript">
  22.  function contar() {
  23.   var checkboxes = document.getElementById("form1").checkbox; //Array que contiene los checkbox
  24.  
  25.   var cont = 0; //Variable que lleva la cuenta de los checkbox pulsados
  26.  
  27.   for (var x=0; x < checkboxes.length; x++) {
  28.    if (checkboxes[x].checked) {
  29.     cont = cont + 1;
  30.    }
  31.   }
  32.   document.getElementById('contador').value =cont;
  33.   //alert ("El número de checkbox pulsados es " + cont);
  34.  }
  35. </script>


Código HTML:
Ver original
  1. <form id="form1" method="post" action="recibio.php" onClick="contar();">
  2.  <label for="name">Nombre</label>
  3.         <input type="text" name="nombre" id="nombre" class="text ui-widget-content ui-corner-all" />
  4. <table width="747" border="0" id="users" >
  5.   <tr>
  6.     <td width="244"><label>
  7.       <input type="checkbox" name="checkbox" value="opcion1" id="chk"/>
  8.       Opcion 1
  9.     </label></td>
  10.     </tr>
  11.   <tr>
  12.     <td><label>
  13.       <input type="checkbox" name="checkbox" value="opcion2" id="chk"/>
  14.       Opcion  2 </label></td>
  15.     </tr>
  16.   <tr>
  17.     <td><label>
  18.       <input type="checkbox" name="checkbox" value="opcion3" id="chk"/>
  19.       Opcion 3 </label></td>
  20.     </tr>
  21.   <tr>
  22.     <td><label>
  23.       <input type="checkbox" name="checkbox" value="opcion4" id="chk"/>
  24.       Opcion 4 </label></td>
  25.     </tr>
  26.   <tr>
  27.     <td><label>
  28.       <input type="checkbox" name="checkbox" value="opcion5" id="chk"/>
  29.       Opcion 5 </label></td>
  30.     </tr>
  31.   <tr>
  32.     <td><label>
  33.       <input type="checkbox" name="checkbox" value="opcion6" id="chk"/>
  34.       Opcion 6 </label></td>
  35.     </tr>
  36.   <tr>
  37.     <td><label>
  38.       <input type="checkbox" name="checkbox" value="opcion7" id="chk"/>
  39.       Opcion 7 </label></td>
  40.     </tr>
  41.   <tr>
  42.     <td><label>
  43.       <input type="checkbox" name="checkbox" value="opcion8" id="chk"/>
  44.       Opcion 8 </label></td>
  45.     </tr>
  46.   <tr>
  47.     <td><label>
  48.       <input type="checkbox" name="checkbox" value="opcion9" id="chk"/>
  49.       Opcion 9 </label></td>
  50.     </tr>
  51.   <tr>
  52.     <td><input type="checkbox" name="checkbox" value="opcion10" id="chk" />
  53.       Opcion 10 </td>
  54.     </tr>
  55.   <tr>
  56.     <td><input type="checkbox" name="checkbox" value="opcion11" id="chk" />
  57.       Opcion 11 </td>
  58.     </tr>
  59.   <tr>
  60.     <td><input type="checkbox" name="checkbox" value="opcion12" id="chk"/>
  61.       Opcion 12 </td>
  62.     </tr>
  63.   <tr>
  64.     <td>&nbsp;</td>
  65.     </tr>
  66.   <tr>
  67.     <td><label>
  68.     <div align="center">
  69.       <input name="" type='checkbox' id='chk_todos' onclick="calcularTodos();" value="checkbox" />
  70.     </div>
  71.     </label>
  72.       <div align="center">todos</div></td>
  73.     </tr>
  74.     </fieldset>
  75.    
  76.     <input name="contador" id="contador" type="text"/>
  77. </form>


necesito que cada checkbox tenga el nombre asi : name="checkbox_1" name="checkbox_2"....... name="checkbox_12" y poderlos contar hasta el momento lo logro si todos se llaman name="checkbo"

como lo puedo hacer?
  #3 (permalink)  
Antiguo 21/04/2012, 20:42
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: Contar el numero de checkbox activos

Varias cosas a mencionar
No podés repetir los id.
Si los checkboxes corresponden a un mismo grupo, y al parecer asi es (digamos el grupo "opciones"), no tenes que darles names diferentes, contruis un array para que php lo procese
Si ya estás utilizando jquery ($.ajax), por que no simplifica´s y hacés todo con jquery.

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 type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
  7. </head>
  8. <form id="form1" method="post" action="recibio.php" style="width: 50%;" name="form1">
  9. <fieldset><label for="nombre">Nombre</label> <input type="text" name="nombre" id="nombre" class="text ui-widget-content ui-corner-all" />
  10. <table border="0" id="users">
  11. <tr>
  12. <td width="244"><label><input class="chk" type="checkbox" name="opcion[]" value="opcion1" /> Opcion 1</label></td>
  13.  
  14. </tr>
  15. <tr>
  16. <td><label><input class="chk" type="checkbox" name="opcion[]" value="opcion2" /> Opcion 2</label></td>
  17. </tr>
  18. <tr>
  19. <td><label><input class="chk" type="checkbox" name="opcion[]" value="opcion3" /> Opcion 3</label></td>
  20. </tr>
  21. <tr>
  22. <td><label><input class="chk" type="checkbox" name="opcion[]" value="opcion4" /> Opcion 4</label></td>
  23. </tr>
  24. <tr>
  25.  
  26. <td><label><input class="chk" type="checkbox" name="opcion[]" value="opcion5" /> Opcion 5</label></td>
  27. </tr>
  28. <tr>
  29. <td><label><input class="chk" type="checkbox" name="opcion[]" value="opcion6" /> Opcion 6</label></td>
  30. </tr>
  31. <tr>
  32. <td><label><input class="chk" type="checkbox" name="opcion[]" value="opcion7" /> Opcion 7</label></td>
  33. </tr>
  34. <tr>
  35. <td><label><input class="chk" type="checkbox" name="opcion[]" value="opcion8" /> Opcion 8</label></td>
  36.  
  37. </tr>
  38. <tr>
  39. <td><label><input class="chk" type="checkbox" name="opcion[]" value="opcion9" /> Opcion 9</label></td>
  40. </tr>
  41. <tr>
  42. <td><input class="chk" type="checkbox" name="opcion[]" value="opcion10" /> Opcion 10</td>
  43. </tr>
  44. <tr>
  45. <td><input class="chk" type="checkbox" name="opcion[]" value="opcion11" /> Opcion 11</td>
  46. </tr>
  47. <tr>
  48.  
  49. <td><input class="chk" type="checkbox" name="opcion[]" value="opcion12" /> Opcion 12</td>
  50. </tr>
  51. <tr>
  52. <td>&nbsp;</td>
  53. </tr>
  54. <tr>
  55. <td><label><input type='checkbox' id='chk_todos' value="checkbox" /></label> todos</td>
  56. </tr>
  57. <input name="contador" id="contador" type="text" value="ninguno" /></form>
  58. <script type="text/javascript">
  59. //<![CDATA[
  60. $(document).ready(function(){  
  61. $(".chk").click(function(event) {
  62. var laclase = $(this).attr("class");
  63. var count = $(":checkbox.chk:checked").length;
  64. $('#contador').val(count);
  65. });
  66.  
  67. $("#chk_todos").click(function(){
  68.  
  69. var checked_estado = this.checked;
  70.  
  71. if(checked_estado == true){
  72.  $('#contador').val('todos');
  73.  }else{
  74.  $('#contador').val('ninguno');
  75.  }
  76.  $(".chk").each(function(){
  77.  this.checked = checked_estado;
  78.  });
  79. });
  80. });
  81. //]]>
  82.  
  83. </body>
  84. </html>

Para finalizar, el valor de la cantidad de opciones seleccionadas y el valor de las mismas, se puede hacer en el php
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #4 (permalink)  
Antiguo 21/04/2012, 21:07
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Contar el numero de checkbox activos

gracias por responder emprear

tengo una duda

como se que se el valor de los checkbox si estan activos?
  #5 (permalink)  
Antiguo 21/04/2012, 21:19
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Contar el numero de checkbox activos

este es mi script php

Código PHP:
Ver original
  1. $nombre = $_POST["nombre"];
  2. echo $nombre;
  3. echo "<br>";
  4. $contador = $_POST["contador"];
  5. echo $contador;
  6. echo "<br>";
  7. for ($i=1;$i<=$_POST['contador'];$i++)
  8.         {
  9.          
  10.          //echo $i;
  11.          echo "<br>";
  12.          $destinatario = $_POST["opcion[]"];
  13.          echo $destinatario;
  14.          echo "<br>";
  15.         }

tengo problemas para imprimir el array de opciones
  #6 (permalink)  
Antiguo 22/04/2012, 12:45
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: Contar el numero de checkbox activos

Te dejo un modelo comlpleto para que lo analices y compares con el tuyo, la cave un poco pasa por usar empty(). Se entiende que $opciones es un array, donde cada uno de sus valores es lo que se haya pasado en los opcion[] del form

fijate

Código PHP:
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. <head>
  5. <title>Opciones</title>
  6. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  7. </head>
  8. <body>
  9. <?php
  10.  
  11. if(isset($_POST['procesar'])){
  12. $opciones = $_POST['opcion'];
  13. if(isset($_POST['ayudaExtra'])){
  14. echo "<p>Se solicitó ayuda extra</p>\n";
  15. }else{
  16. echo "<p>No se requirió ayuda extra.</p>\n";
  17. }
  18.  
  19. // Con esto te imprime cuales opciones se seleccionaron
  20. if(empty($opciones)){
  21. echo "<p>No hay opciones seleccionadas.</p>\n";
  22. }else{
  23. $totalSeleccionados = count($opciones);
  24. echo "<p>Se seleccionaron $totalSeleccionados opcion(s): ";
  25. for($i=0; $i < $totalSeleccionados; $i++){
  26. echo($opciones[$i] . " ");
  27. }
  28. echo "</p>";
  29. }
  30.  
  31.        
  32. // una variante si querés saber si un checkbox en particular está seleccionado
  33. // lo pongo solo para dos, A y B, podés agregarla para el resto, se puede tambie extraer esta info
  34. // del resultado anterior, usa la función estaSeleccionado() al pie
  35.     if(estaSeleccionado('opcion','A')){
  36.     echo "<b>A se incluye en la selección</b><br />";
  37.     }
  38.     if(estaSeleccionado('opcion','B')){
  39.     echo "<b>B se incluye en la selección</b><br />";
  40.     }
  41.  
  42. } // cierre post procesar
  43.    
  44. function estaSeleccionado($nombreCb,$valorCB){
  45.     if(!empty($_POST[$nombreCb])){
  46.         foreach($_POST[$nombreCb] as $elValor){
  47.             if($elValor == $valorCB){
  48.             return true;
  49.             }
  50.         }
  51.     }
  52. return false;
  53. }
  54. ?>
  55.  
  56. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  57.     <p>
  58.         ¿Que opciones prefiere?<br/>
  59.         <input type="checkbox" name="opcion[]" value="A" />A<br />
  60.         <input type="checkbox" name="opcion[]" value="B" />B<br />
  61.         <input type="checkbox" name="opcion[]" value="C" />C<br />
  62.         <input type="checkbox" name="opcion[]" value="D" />D<br />
  63.         <input type="checkbox" name="opcion[]" value="E" />E
  64.     </p>
  65.     <p>
  66.         ¿Necesita ayuda extra?
  67.         <input type="checkbox" name="ayudaExtra" value="Yes" />
  68.     </p>
  69.     <input type="submit" name="procesar" value="enviar" />
  70. </form>
  71.  
  72.  
  73. </body>
  74. </html>

Saludos
PD, si hay más dudas, te recomendo pidas que muevan el tema a php
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 22/05/2012, 11:31
 
Fecha de Ingreso: octubre-2011
Mensajes: 34
Antigüedad: 12 años, 5 meses
Puntos: 2
Respuesta: Contar el numero de checkbox activos

Cita:
Iniciado por emprear Ver Mensaje
Varias cosas a mencionar
No podés repetir los id.
Si los checkboxes corresponden a un mismo grupo, y al parecer asi es (digamos el grupo "opciones"), no tenes que darles names diferentes, contruis un array para que php lo procese
Si ya estás utilizando jquery ($.ajax), por que no simplifica´s y hacés todo con jquery.


Para finalizar, el valor de la cantidad de opciones seleccionadas y el valor de las mismas, se puede hacer en el php
Saludos
Me ha servido mucho tu código para hacer un formulario donde al marcar más de una casilla aparezca un menú de opciones. , parecido al que usa GMAIL en su bandeja de entrada y para el cual [URL="http://www.forosdelweb.com/f13/desplegar-menu-hacer-clic-casilla-lista-checkbox-tipo-gmail-994445/#post4193918"] abrí un tema explicando lo que se pretendía lograr[/URL] y el Javascript que soluciona dicho asunto.

Saludos.

Etiquetas: activos, ajax, checkbox, formulario, html, input, numero, 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 16:48.