Foros del Web » Programando para Internet » Jquery »

Jquery + pasar multiple Checkbox

Estas en el tema de Jquery + pasar multiple Checkbox en el foro de Jquery en Foros del Web. Hola, tengo un form con varios campos y uno de ellos es un checkbox que se genera automaticamente segun el resultado de una query. de ...
  #1 (permalink)  
Antiguo 05/05/2010, 04:02
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 11 meses
Puntos: 10
Jquery + pasar multiple Checkbox

Hola,

tengo un form con varios campos y uno de ellos es un checkbox que se genera automaticamente segun el resultado de una query.

de la siguiente manera:

Código PHP:

<table class="tablesorter">    
<tr>
    <th>campoX</th>
    <th>CamopY</th>    
    <th>&nbsp;</th>
</tr>
<?php
if($sql) {

    while( 
$resultado mysql_fetch_array($sql) ){        
    
    
?>
        <tr id="fila-<?php echo $resultado ['id']; ?>">
            <td align="left"><?php echo  $resultado ['campoX']; ?></td>
            <td align="left"><?php echo $resultado ['campoY']; ?></td>
            <td><input type="checkbox" id="checkbox<?php echo $resultado ['id'];?>" name="checkbox<?php echo $resultado ['id'];?>" value="1"/></td>
        </tr>
      
    <?php
    
}
}
?>
</table>
lo cual me quedaria un checkbox1, checkbox2, checkbox3..... dependiendo de la cantidad de registros devueltos en la query.


entonces, cuando llamo la función Jquery para comprobar campos y pasarlos por Post a otra pagina, no ser como pasar este checkbox.

el código en javascript es el siguiente: (resumido)
Código Javascript:
Ver original
  1. function xxx(){        
  2.        
  3.         var campo1= $('#campo1').attr('value');
  4.        
  5.         var campo2= $('#campo2').attr('value');    
  6.         var campo3= $('#campo3').attr('value');
  7.         var campo4= $('#campo4').attr('value');
  8.  
  9. $.ajax({
  10.             url: 'mipagina/mipagina.php',
  11.             type: "POST",
  12.             data: "submit=&campo1="+campo1+"&campo2="+campo2+"&campo3="+campo3+"&campo4="+campo4,
  13. beforeSend: function(){
  14.                 if (campo1==""){
  15.                     alert("Campo 1 es Obligatorio.");
  16.                     $("#campo1").focus();
  17.                     return false;
  18.                 }
  19.                             },         
  20.             success: function(datos){  
  21.                 alert(datos);          
  22.             },
  23.             complete: function(){/*Quan s'hagi completat*/}    
  24.         });
  25.         return false;
  26.     }
  27.  
  28.  
  29. }

entonces mi pregunta es: como puedo hacer para pasar las todos los checkbox generados por la query?



saludos y gracias de antemano!!!!
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #2 (permalink)  
Antiguo 05/05/2010, 04:25
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 15 años
Puntos: 65
Respuesta: Jquery + pasar multiple Checkbox

con serialize() http://api.jquery.com/serialize/
  #3 (permalink)  
Antiguo 05/05/2010, 05:12
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 11 meses
Puntos: 10
Respuesta: Jquery + pasar multiple Checkbox

Hola Dany_s, gracias por tu rápida respuesta aunque no acabo de dar con la solución, para q me coja todos los checkbok y me los pase por Post a otra pagina.

aquí es la parte donde creo los checkbox:

Código PHP:
Ver original
  1. <?php
  2.  
  3. require('../lib/class/preventius.class.php');
  4. require('../lib/funcions/utils.php');
  5.  
  6.  
  7. $objPreventiu   = new Preventius;
  8.  
  9. extract($_POST); //extreu les variables d'un array.
  10.  
  11. if($paramTipo == 1){
  12.    
  13.     $w  = "";  
  14.     $w  = " WHERE id_maquina = ".$paramMaquina."";
  15.     $w .= " AND preventiu_fet = 0";
  16.     $w .= " AND preventius.situacio = 0";
  17.    
  18.     $order = "";
  19.     $order = " ORDER BY data_revisio ASC";
  20.    
  21. }
  22. $sql_preventius  = $objPreventiu->mostrar_preventius_wo($w,$order);
  23.  
  24. ?>
  25. <table class="tablesorter">
  26. <tr>
  27.     <th>Prox.Revision</th>
  28.     <th>Preventivo</th>
  29.     <th>&nbsp;</th>
  30. </tr>
  31. <?php
  32. if($sql_preventius) {
  33.  
  34.     while( $preventius = mysql_fetch_array($sql_preventius) ){     
  35.    
  36.     ?>
  37.         <tr id="fila-<?php echo $preventius['id_preventiu']; ?>">
  38.             <td align="left"><?php echo format_data($preventius['data_revisio'],'ymd','d/m/y'); ?></td>
  39.             <td align="left"><?php echo utf8_decode($preventius['tipus_preventiu']); ?></td>
  40.             <td><input type="checkbox" id="preventiu<?php echo $preventius['id_preventiu'];?>" name="preventiu" value="1"/></td>
  41.         </tr>
  42.      
  43.     <?php
  44.     }
  45. }
  46. ?>
  47. </table>

y aquí es donde compruebo todas la variables de mi form para pasarlas por post:
Código Javascript:
Ver original
  1. function AltaRapport(){    
  2.  
  3.        
  4.        
  5.         var ref_rapport     = $('#ref_rapport').attr('value');
  6.        
  7.         var data_avis       = $('#data_avis').attr('value');       
  8.         var data_ini        = $('#data_ini').attr('value');
  9.         var data_fin        = $('#data_fin').attr('value');
  10.        
  11.         var id_localitat    = $('#id_localitat').attr('value');
  12.         var id_seccio       = $('#id_seccio').attr('value');
  13.         var id_maquina      = $('#id_maquina').attr('value');  
  14.  
  15.         // -- Avaria
  16.         var hora_averia_avis    = $('#hora_averia_avis').attr('value');
  17.         var hora_averia_ini     = $('#hora_averia_ini').attr('value');     
  18.         var hora_averia_fin     = $('#hora_averia_fin').attr('value');
  19.  
  20.                    
  21.         var descripcio_averia   = $('#descripcio_averia').attr('value');
  22.         var material_averia     = $('#material_averia').attr('value');
  23.        
  24.         var dies_paro_averia        = $('#dies_paro_averia').attr('value');
  25.         var hores_paro_averia       = $('#hores_paro_averia').attr('value');
  26.         var minuts_paro_averia      = $('#minuts_paro_averia').attr('value');
  27.        
  28.         var dies_reparacio_averia   = $('#dies_reparacio_averia').attr('value');       
  29.         var hores_reparacio_averia  = $('#hores_reparacio_averia').attr('value');
  30.         var minuts_reparacio_averia = $('#minuts_reparacio_averia').attr('value');
  31.        
  32.         var preu_hora_averia        = $('#preu_hora_averia').attr('value');
  33.         var preu_material_averia    = $('#preu_material_averia').attr('value');    
  34.         var preu_total_averia       = $('#preu_total_averia').attr('value');
  35.        
  36.         // -- Activitat
  37.         var descripcio_activitat    = $('#descripcio_activitat').attr('value');
  38.         var material_activitat      = $('#material_activitat').attr('value');              
  39.  
  40.                    
  41.         var descripcio_averia   = $('#descripcio_averia').attr('value');
  42.         var material_averia     = $('#material_averia').attr('value');
  43.        
  44.         var dies_reparacio_activitat        = $('#dies_reparacio_activitat').attr('value');
  45.         var hores_reparacio_activitat       = $('#hores_reparacio_activitat').attr('value');
  46.         var minuts_reparacio_activitat      = $('#minuts_reparacio_activitat').attr('value');
  47.         var preu_hora_activitat             = $('#preu_hora_activitat').attr('value');     
  48.         var preu_material_activitat         = $('#preu_material_activitat').attr('value');
  49.         var preu_total_activitat            = $('#preu_total_activitat').attr('value');
  50.  
  51.  
  52. //AQUI ES DONDE ESTOY INTENTANDO COGER LOS VALORES DE LOS CHECKBOX PERO... NO SER.
  53. // HE PROBADO PASAÄDOLE EL FORM Y LUEGO MOSTRARLO PERO NO ME MUESTRA NADA
  54.         var str = $("preventiu").serialize();
  55.         alert(str);
  56.  
  57.  
  58.        
  59.        
  60.  
  61.         $.ajax({
  62.             url: 'rapports/nou_rapport.php',
  63.             type: "POST",
  64.             data: "submit=&ref_rapport="+ref_rapport+"&data_avis="+data_avis+"&data_ini="+data_ini+"&data_fin="+data_fin+
  65.             "&id_localitat="+id_localitat+"&id_seccio="+id_seccio+"&id_maquina="+id_maquina+
  66.             "&hora_averia_avis="+hora_averia_avis+"&hora_averia_ini="+hora_averia_ini+"&hora_averia_fin="+hora_averia_fin+
  67.             "&descripcio_averia="+descripcio_averia+"&material_averia="+material_averia+
  68.             "&dies_paro_averia="+dies_paro_averia+"&hores_paro_averia="+hores_paro_averia+"&minuts_paro_averia="+minuts_paro_averia+
  69.             "&dies_reparacio_averia="+dies_reparacio_averia+"&hores_reparacio_averia="+hores_reparacio_averia+"&minuts_reparacio_averia="+minuts_reparacio_averia+
  70.             "&preu_hora_averia="+preu_hora_averia+"&preu_material_averia="+preu_material_averia+"&preu_total_averia="+preu_total_averia,
  71.             beforeSend: function(){
  72.                 if (ref_rapport==""){
  73.                     alert("Referenciar el Rapport es Obligatoria.");
  74.                     $("#ref_rapport").focus();
  75.                     return false;
  76.                 }
  77.                 if (data_avis==""){
  78.                     alert("La Fecha de Aviso es Obligatoria.");
  79.                     $("#data_avis").focus();
  80.                     return false;
  81.                 }
  82.             },         
  83.             success: function(datos){  
  84.                 alert(datos);          
  85.                 $("#dades_maquina").hide();
  86.                 $("#formulari").show();
  87.                 $("#list_tabla").show();
  88.             },
  89.             complete: function(){/*Quan s'hagi completat*/}    
  90.         });
  91.         return false;
  92.        
  93.     }

me podrias dar una pistilla más?


gracias de antemano
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #4 (permalink)  
Antiguo 05/05/2010, 06:10
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 15 años
Puntos: 65
Respuesta: Jquery + pasar multiple Checkbox

serialize te convierte los campos de un formulario a una cadena de pares nombre/valor

Código HTML:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Prueba</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
$( function (){
    $('input[name=preventiu]').change( function (){
        $('#campos').text( $('input[name=preventiu]').serialize() );
    });
});
</script>

</head>
<body>
<input type="checkbox" name="preventiu" value="1"><br />
<input type="checkbox" name="preventiu" value="2"><br />
<input type="checkbox" name="preventiu" value="3"><br />
<input type="checkbox" name="preventiu" value="4"><br />
<input type="checkbox" name="preventiu" value="5"><br />
<input type="checkbox" name="preventiu" value="6"><br />
<input type="checkbox" name="preventiu" value="7"><br />
<div id="campos"></div>
</body>
</html> 
ahi tomo todos los input con name preventiu y genero la cadena, es lo mismo que la cadena get y que también es lo que se le pasa en el parámetro data de ajax

para obtener los valores de todos los elementos de un formulario podes hacer como muestra el ejemplo de la doc de jquery que pase anteriormente
  #5 (permalink)  
Antiguo 05/05/2010, 07:49
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 11 meses
Puntos: 10
Respuesta: Jquery + pasar multiple Checkbox

Gracias de nuevo Dany_s!!!!!!

al final en toda la comprobación lo puse así:
Código Javascript:
Ver original
  1. var query_preventius = '';
  2.         $("input[name='preventiu']").each(
  3.             function()
  4.             {
  5.                 if (this.checked)
  6.                 {
  7.                     query_preventius += "&preventiu[]=" + this.value;
  8.                 }
  9.                
  10.             });

y de momento funciona genial!

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier

Última edición por sergi_climent; 05/05/2010 a las 08:12
  #6 (permalink)  
Antiguo 05/05/2010, 08:59
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 15 años
Puntos: 65
Respuesta: Jquery + pasar multiple Checkbox

pero si eso lo podés hacer en una sola linea con serialize()
  #7 (permalink)  
Antiguo 05/05/2010, 09:09
 
Fecha de Ingreso: abril-2008
Ubicación: MDQ
Mensajes: 54
Antigüedad: 16 años, 8 meses
Puntos: 2
Respuesta: Jquery + pasar multiple Checkbox

Hehehe más vale lo malo conocido que lo bueno por conocer :D
  #8 (permalink)  
Antiguo 05/05/2010, 09:10
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 11 meses
Puntos: 10
Respuesta: Jquery + pasar multiple Checkbox

no logré que me tirara bien con serialize! ^^
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #9 (permalink)  
Antiguo 05/05/2010, 09:24
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 15 años
Puntos: 65
Respuesta: Jquery + pasar multiple Checkbox

Cita:
Iniciado por chifliiiii Ver Mensaje
Hehehe más vale lo malo conocido que lo bueno por conocer :D
jeje pero en un proyecto grande ahorrar 1 linea es valioso y mejor agarrar costumbre
  #10 (permalink)  
Antiguo 19/07/2010, 14:11
 
Fecha de Ingreso: julio-2010
Mensajes: 2
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Jquery + pasar multiple Checkbox

Que tal Dany_s creo que sergi_climent no utilizo serialize porque al usar tu ejemplo que pusiste anteriormente el resultado seria:

preventiu=1&preventiu=2&preventiu=3&preventiu=4&pr eventiu=5&preventiu=6&preventiu=7

Ahora bien como tu dices que se muestra como en los formularios que se manda la informacion por get tienes razon pero si vez el valor de cada uno es la misma variable que es preventiu.
Entonces lo que puede hacer sergi_climent para que le salga el codigo mejor es utilizar serialize de la siguiente manera

$( function (){
$('input:checkbox').change( function (){
$('#campos').text( $('input:checkbox').serialize() );
});
});

Con esto sergi_climent podra tener los checkbox de diferentes nombres y las variables se presentarian distintas. Un ejemplo sencillo:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Prueba</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
$( function (){
$('input:checkbox').change( function (){
$('#campos').text( $('input:checkbox').serialize() );
});
});
</script>
</head>
<body>
<input type="checkbox" name="preventiu1" value="1"><br />
<input type="checkbox" name="preventiu2" value="2"><br />
<input type="checkbox" name="preventiu3" value="3"><br />
<input type="checkbox" name="preventiu4" value="4"><br />
<input type="checkbox" name="preventiu5" value="5"><br />
<input type="checkbox" name="preventiu6" value="6"><br />
<input type="checkbox" name="preventiu7" value="7"><br />
<div id="campos"></div>
</body>
</html>

La data se motraría así:

preventiu1=1&preventiu2=2&preventiu3=3&preventiu4= 4&preventiu5=5&preventiu6=6&preventiu7=7

Etiquetas: checkbox, pasar
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 13:14.