JQuery - Lectura de valores checkbox de Jquery + datos get

   
Vista:
Imágen de perfil de Javier

Lectura de valores checkbox de Jquery + datos get

Publicado por Javier (4 intervenciones) el 16/08/2015 20:47:31
Buenos días a todos. Estoy atascado y no doy con la solución a este problema.

Tengo un documento donde al realizar una búsqueda mediante PHP me muestra los datos y me los muestra con un checkbox en el lado izquierdo.
Cuando encuentra solamente uno y lo seleccionas y pulsas crear escrito te crea perfectamente el escrito correspondiente.
Si realizas la búsqueda y pulsas uno de ellos para generar el word el Jquery solo coge el primer registro del PHP.
No sé de qué manera se pueden almacenar los datos y pueda ir enviando uno a uno los checkbox seleccionados

Os dejo el código a ver podéis echarme un cable.

¡ GRACIAS!


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*digo JavaScript*/
Código PHP:
<script type="text/javascript">
function crearEscritosMasivos(){
 
     var referencia = $("#referenciaID").val();
     var escrito = $("#escritoExpediente").val();
     var checkboxValues = new Array();
//recorremos todos los checkbox seleccionados con .each 
     if (escrito != -1){
         $('#referenciaID :checked').each(function() {
    //$(this).val() es el valor del checkbox correspondiente 
    checkboxValues.push($(this).val());
 
});
         /*Abre en una pestaña*/ 
    window.open("../models/Escritos.php?referencia="+referencia+"&escrito="+escrito, '_blank');
 
            }
        }
</script>
 
/*digo PHP*/
Código PHP:
if($fecha=""){
$busqueda = "SELECT * FROM usuarios WHERE fecha like '$fecha'";
                }
            $result = mysqli_query($conexion, $busqueda);
                    while ($f= mysqli_fetch_array($result)){
                   $dni = $f['dni'];
 
                  echo '<form name="formExpedientesEncontrados">';
                  echo '<tr><th>'.'<input type="checkbox" id = "dniID" name="dniID" value='.$f['dni'].'>'.'</th>';
                           echo "<th>".$f['dni']."</th>";
                           echo "<th>".$f['nombre']."</th>";
                           echo "</tr>";
                           echo '</form>';
 
 
                       }
 
$countRegistros = count($result);
    if ($countRegistros != 0){
        echo '<label>Escrito</label>
             <select class="form-control" id="escritoExpediente"> 
              <option value="-1">Selecciona Escrito</option> 
                <option value="escrito1">AUTORIZACION PADRES</option> 
                <option value="escrito2">SEGURO ACTIVIDAD</option> 
                <option value="escrito3">RESEÑA EXCELENCIA</option> 
                        
</select>';
 
 
    echo '<div class="text-left">';
 
        echo '<button type="button" class="btn btn-primary btn-sm" onclick="crearEscritosMasivos(this)">CREAR ESCRITOS</button>';
        echo '<br>';
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Vainas

Lectura de valores checkbox de Jquery + datos get

Publicado por Vainas (96 intervenciones) el 16/08/2015 21:46:39
Buenas:

Podrias colocar el html que te suelta el php. Es para saber como estan los checkbox una vez que salen del servidor.

No puedo ver a que hace referencia #referenciaID en esta parte:

$('#referenciaID :checked').each(function() { ...

Ya que el checbox no tiene ese id por ejemplo. Ademas no deberia ser # sino . ya que deberias referirte a varios checkboxex no solo a uno.

Si me das el html se puede mirar que pasa.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Javier

Lectura de valores checkbox de Jquery + datos get

Publicado por Javier (4 intervenciones) el 16/08/2015 22:27:45
Primero y antes de nada, gracias por contestar.

Cuándo te refieres al código HTML imagino que te referirás a esto...

1
2
3
<form name="formExpedientesEncontrados"></form><tr><th><input type="checkbox" id="referenciaID" name="referenciaID[]" value="05285475L"></th><th>05285475L</th><th>Julio</th></tr>
<form name="formExpedientesEncontrados"></form><tr><th><input type="checkbox" id="referenciaID" name="referenciaID[]" value="123456J"></th><th>23456J</th><th>Manuel</th></tr><form name="formExpedientesEncontrados"></form><tr>
<th><input type="checkbox" id="referenciaID" name="referenciaID[]" value="04541897M"></th><th>Lucia</th></tr>

Lo del . la verdad es que no tenía ni idea. Al cambiarlo ahora no me recoge ningún valor...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas

Lectura de valores checkbox de Jquery + datos get

Publicado por Vainas (96 intervenciones) el 17/08/2015 12:51:57
Buenas de nuevo:

Por partes

1. En html no se puede repetir el ID. No se debe, por que poder se puede pero luego tendras problema en el codigo asi que intenta que en tu html <input type="checkbox" id="###" tenga un valor diferente para cada uno (esto se aplica tambien a los demas elementos de html). Para seleccionar varios elementos html lo puedes hacer por clases:

<input type="checkbox" id="referenciaID" class="myCheckbox".....

Y en el jQuery lo vamos a usar de la siguiente manera:

$(".myCheckbox:checkbox:checked").each(....

Te dejo un pequeño ejemplo de tu codigo que funciona (siempre y cuando asignes al input una clase="mCheckbox"):

1
2
3
4
5
6
7
8
function crearEscritosMasivos(){
     var checkboxValues = new Array();
 
$('.myCheckbox:checkbox:checked').each(function() {
	checkboxValues.push($(this).val());
});
    console.log(checkboxValues);
}

2. En el html que me pasas los formularios quedan vacios y fuera pones los inputs... revisalo.

3. La variable "checkboxValues" se declara dentro de la funcion... eres conciente de que cuando sales de la funcion la misma desaparece? lo digo por si vas a hacer uso de ese array fuera para que lo tengas en cuenta.

Espero que todo esto te sirva.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Javier

Lectura de valores checkbox de Jquery + datos get

Publicado por Javier (4 intervenciones) el 17/08/2015 14:37:05
Probado el código y modificando lo que me has comentado ahora el programa sí coge el checkbox que seleccionas y manda los datos correctamente. La duda que me viene a la cabeza es si existe la posibilidad de que al seleccionar varios y llames a la función mande los datos uno por uno de manera individual. Es decir, en vez de hacerlo solo con un registro hacerlo con X. Hasta ahora con esto al seleccionar dos no manda nada...Como si se quedase pillado.

Con respecto a que tengo la función dentro de otra función es otras de las dudas que tuve al realizar el código. ¿Podría eliminar lo que tengo y dejar solo la funcion each?

Muchas gracias.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas

Lectura de valores checkbox de Jquery + datos get

Publicado por Vainas (96 intervenciones) el 18/08/2015 09:11:03
Buenas:

Explicamelo mejor con codigo asi igual me entero un poco mas. No puedo ver como envias los datos ya que la variable checkboxValues no la utilizas dentro del window.open, asi que imagino que la usas en otro lado?

No veo aqui que tengas una function dentro de otra. Explicame mejor todo (si quieres en un nuevo hilo) y le buscamos solucion.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Javier

Lectura de valores checkbox de Jquery + datos get

Publicado por Javier (4 intervenciones) el 18/08/2015 09:38:02
Vamos a seguir con el mismo hilo para no saturar mucho la página.

Voy a intentar desglosarlo de la mejor manera posible:

/*Código jQuery con la última modificación*/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script type="text/javascript">
 
function crearEscritosMasivos(){
     var checkboxValues = new Array();
 	var escrito = $("#escritoExpediente").val();
 	if (escrito != -1){
$('.myCheckbox:checkbox:checked').each(function() {
	checkboxValues.push($(this).val());
});
    console.log(checkboxValues);
    window.open("../models/Escritos.php?referencia="+checkboxValues+"&escrito="+escrito, '_blank');
	}
}
</script>

/*Código PHP mandar datos al escrito */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*digo PHP*/
Código PHP:
if($fecha=""){
$busqueda = "SELECT * FROM usuarios WHERE fecha like '$fecha'";
                }
            $result = mysqli_query($conexion, $busqueda);
                    while ($f= mysqli_fetch_array($result)){
                   $dni = $f['dni'];
 
                  echo '<form name="formExpedientesEncontrados">';
                  echo '<tr><th>'.'<input type="checkbox" id = "###"class="myCheckbox" value='.$f['dni'].'>'.'</th>';
                           echo "<th>".$f['dni']."</th>";
                           echo "<th>".$f['nombre']."</th>";
                           echo "</tr>";
                           echo '</form>';
 
 
                       }
 
$countRegistros = count($result);
    if ($countRegistros != 0){
        echo '<label>Escrito</label>
             <select class="form-control" id="escritoExpediente">
              <option value="-1">Selecciona Escrito</option>
                <option value="escrito1">AUTORIZACION PADRES</option>
                <option value="escrito2">SEGURO ACTIVIDAD</option>
                <option value="escrito3">RESEÑA EXCELENCIA</option>
 
</select>';
 
 
    echo '<div class="text-left">';
 
        echo '<button type="button" class="btn btn-primary btn-sm" onclick="crearEscritosMasivos(this)">CREAR ESCRITOS</button>';
        echo '<br>';


/*Código donde recibe los datos. Muestro la parte acorde a la recepción puesto que lo que va siguiente funciona bien*/

1
2
3
4
<?php
$escrito= $_GET['escrito'];
$referencia=$_GET["referencia"];
?>

¿Cómo funciona? Hasta ahora al realizar una búsqueda aparecen los combobox selecciona uno de ellos y al darle al botón generar escrito lo crea. Si seleccionas más de uno se mandan también pero sin enviar los datos de selección.

¿Qué deseo? Que al seleccionar X combobox (cada uno como verás tiene un DNI propio) los mande de manera separado a la otra página.

Ej: Pulso el combobox1 (DNI: 1111111111A- Luis) y el combobox 5 (DNI: 55555555B- Pedro) y se me crean dos escritos diferentes con los datos de cada combobox. Como recorriendo el array.

No sé si queda todo claro...

Por último cuando digo lo de que tengo una función dentro de otra me refiero a esto. Es decir que tengo los check dentro de la función.

1
2
3
4
5
6
7
8
9
10
11
12
13
/* FUNCION*/
function crearEscritosMasivos(){
     var checkboxValues = new Array();
 	var escrito = $("#escritoExpediente").val();
 	if (escrito != -1){
/* FUNCIÓN*/
$('.myCheckbox:checkbox:checked').each(function() {
	checkboxValues.push($(this).val());
});
    console.log(checkboxValues);
    window.open("../models/Escritos.php?referencia="+checkboxValues+"&escrito="+escrito, '_blank');
	}
}

Muchas gracias por todo.
Un saludo,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar