Foros del Web » Programando para Internet » Jquery »

Limpiar los valores de un array JQUERY

Estas en el tema de Limpiar los valores de un array JQUERY en el foro de Jquery en Foros del Web. Hola chicos, tengo una lista de checkbox, con un botón reservar selección, y almaceno en un array aquellos que han sido seleccionados, para ello utilizo ...
  #1 (permalink)  
Antiguo 17/05/2012, 03:45
Avatar de Lucieta86  
Fecha de Ingreso: noviembre-2010
Mensajes: 45
Antigüedad: 14 años
Puntos: 1
Limpiar los valores de un array JQUERY

Hola chicos, tengo una lista de checkbox, con un botón reservar selección, y almaceno en un array aquellos que han sido seleccionados, para ello utilizo el siguiente código de Jquery:

var seleAulas = new Array();
$("input[name='aulaRes']:checked").each(function(){
seleAulas.push($(this).val());
});

Cuando le doy click al botón, este le pasa por ajax los valores a otro script, que se encarga de mostrar la información seleccionada, con el siguiente código:

$opcAulasRes=$_REQUEST["seleAulas"];

Los valores que recoge, los paso a Array para poderlos recorrer despues con un for y mostrarlos:

$aulasRes=explode(',', $opcAulasRes);

Y ya con el for, los muestro.

El problema que tengo es que se quedan guardados los valores seleccionados, es decir, si el usuario cierra la ventana y vuelve a los checkbox y elige otros, y vuelve a darle al botón, siguen mostrandose los anteriores, y no se como limpiar esa variable para que esto no pase.

He provado ya varias cosas, pero nada me ha funcionado.

Alguna sugerencia?

Gracias
  #2 (permalink)  
Antiguo 17/05/2012, 06:23
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Limpiar los valores de un array JQUERY

En realidad deberíamos conocer el resto del JS para ver en qué momento obtenés el array.

Lo indicado sería obtenerlo al momento de hacer click al botón, entonces sería un array nuevo.

Probá este ejemplo en Chrome (o donde tengas una consola):

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <meta charset="utf-8" />
  3. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  4. <script type="text/javascript">
  5.     $(function(){
  6.         $('a').click(function(){
  7.             var seleAulas = new Array();
  8.             $("input[name='aulaRes']:checked").each(function(){
  9.                 seleAulas.push($(this).val());
  10.             });
  11.             console.log(seleAulas);
  12.         });
  13.     });
  14. <title>Menu desplegable</title>
  15. </head>
  16.     <input type="checkbox" name="aulaRes" value="1" />
  17.     <input type="checkbox" name="aulaRes" value="2" />
  18.     <input type="checkbox" name="aulaRes" value="3" />
  19.     <input type="checkbox" name="aulaRes" value="4" />
  20.     <input type="checkbox" name="aulaRes" value="5" />
  21.     <input type="checkbox" name="aulaRes" value="6" />
  22.     <p><a href="#">Ver</a></p>
  23. </body>
  24. </html>

Si vas a la consola de Chrome (F12 --> Console) y vas haciendo click seleccionando diferentes elementos, vas a ver que lo que vos decís no sucede. Si cambio la selección, el array cambia al hacer click.
__________________
nahueljose.com.ar
  #3 (permalink)  
Antiguo 18/05/2012, 02:16
Avatar de Lucieta86  
Fecha de Ingreso: noviembre-2010
Mensajes: 45
Antigüedad: 14 años
Puntos: 1
Respuesta: Limpiar los valores de un array JQUERY

Gracias Naahuel por contestar.

He estado haciendo pruebas, con la consola... y me he dado cuenta de que si que coje los valores, de echo los pasa por url perfectamente, los actualiza con cada cambio, así que finalmente el error esta en el último script, que no los muestra bien, solo muestra los valores que le han llegado la primera vez...

Pego el código de ese script, por si se me ha pasado algo:
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html" charset="utf-8"/>
  4.  
  5. <?php
  6. require "config.php";
  7. require "connect_db.php";
  8. require "functions.php";
  9. ?>
  10.  
  11. <script type="text/javascript">
  12.  
  13. $(function(){
  14.     //al hacer clic en el boton reserva, que se abra el formulario
  15.     $( "#dialog-form" ).dialog( "destroy" );
  16.    
  17.     $( "#dialog-form" ).dialog({
  18.         autoOpen: false,
  19.         height: 600,
  20.         width: 350,
  21.         modal: true,
  22.         buttons: {
  23.             "Realizar Reserva": function() {
  24.                 $( this ).dialog( "close" );
  25.                
  26.             },
  27.             "Cancelar": function() {
  28.                 $( this ).dialog( "close" );
  29.             }
  30.         },
  31.         close: function() {
  32.             allFields.val( "" ).removeClass( "ui-state-error" );
  33.             }
  34.     });
  35.    
  36.     $( "#dialog-form" ).dialog( "open" );
  37.    
  38.     //PARA OBTENER EL EMAIL DEL RESPONSABLE
  39.     $("#name").change(function(){
  40.         var dni=$("#name").find(':selected').val();
  41.         $.ajax({
  42.             type:"POST",
  43.             url:"obtenerMail.php",
  44.             data: "dni="+dni,
  45.             success: function(datos){
  46.                 $("#mailResp").attr('value', datos);
  47.                 $("#mailResp").text(datos);
  48.             }
  49.         });
  50.     });
  51.  
  52. });
  53.    
  54. </head>
  55.  
  56. <?php
  57. //Recoge los valores que necesita
  58.  
  59. $fechaInicio=$_REQUEST["fechaIni"];
  60. $fechaFin=$_REQUEST["fechaFin"];
  61. $opcAulasRes=$_REQUEST["seleAulas"];
  62.  
  63. //Obtener los datos de los responsables
  64. $datos_responsable=get_responsable();
  65. $resp_list="";
  66.     for ($i=0;$i<sizeof($datos_responsable);$i++)
  67.     {
  68.         $resp_list.= "<option value=\"".$datos_responsable[$i][1]. "\"";
  69.         $resp_list.=">".$datos_responsable[$i][0]."</option>". chr(10);
  70.     }
  71.  
  72.  
  73. //Pasar a array las aulas seleccionadas
  74. $aulasRes=explode(',', $opcAulasRes);
  75.  
  76. ?>
  77.  
  78. <div id="dialog-form" title="FORMULARIO RESERVA">
  79.     <!--  <d class="validateTips"></p>  -->
  80.  
  81.     <fieldset>
  82.     <legend>Datos selección</legend>
  83.         <label for="fyhini">Fecha inicio: <?php echo $fechaInicio;?></label> <br/><br/>
  84.         <label for="fyhfin">Fecha fin: <?php echo $fechaFin;?></label> <br/><br/>
  85.         <label for="espacioSelec">Espacio Seleccionado:
  86.        
  87.         <?php
  88.         //echo "VALORES".$opcAulasRes."-".$fechaInicio."-".$fechaFin;
  89.         //die();
  90.         for($aux=0; $aux<count($aulasRes); $aux++){
  91.             if($aux==0) echo $aulasRes[$aux];
  92.             else echo " - ".$aulasRes[$aux];
  93.             }
  94.         ?>
  95.        
  96.         </label>
  97.     </fieldset>
  98.         <br/><br/>
  99.         <label for="name">Responsable*</label> <br/>
  100.         <select id="name" class="text ui-widget-content ui-corner-all" name="name">
  101.         <option  value:"-1" >---Seleccione responsable---</option><?php echo $resp_list; ?></select>
  102.         <br/>
  103.         <label for="email">Email*</label><br/>
  104.         <input type="text" name="mailResp" id="mailResp" value="" class="text ui-widget-content ui-corner-all" />
  105.         <br/>
  106.         <input type="checkbox" id="enviarMail" name="enviarMail" value="mail"/> Enviar email
  107.         <br/><br/>
  108.         <label for="desc">Descripcion*</label>
  109.         <input type="text" name="desc" id="desc" value="" class="text ui-widget-content ui-corner-all" />
  110.          <br/>
  111.         <label for="obser">Observaciones</label>
  112.         <textarea name="obser" id="obser" value="" class="text ui-widget-content ui-corner-all" />
  113.         <br/>
  114.         <label for="comentario">* Campos obligatorios</label>
  115.    
  116. </form>    
  117. </div>
  118. </body>
  119. </html>

Al llamar a este script en reiteradas ocasiones, este solo muestra los valores que obtiene la primera vez que se accede, y aunque el resto de ocasiones, lo vuelven a llamar... este sigue manteniendo el valor obtenido anteriormente, y los valores le llegan nuevos...

No entiendo muy bien porque...

Alguna idea?

Saludos
  #4 (permalink)  
Antiguo 18/05/2012, 05:29
Avatar de Lucieta86  
Fecha de Ingreso: noviembre-2010
Mensajes: 45
Antigüedad: 14 años
Puntos: 1
Respuesta: Limpiar los valores de un array JQUERY

He estado probando unset, despues de utilizar las variables, y nada... no funciona!
Alucino!

El caso es que me he dado cuenta de que no solo no muestra bien el array sino tambien las variables que en se muestran como las fechas...

Y despues de utilizar la consola... he visto que el valor le llega bien, asi que no comprendo porque no actualiza su valor!

Ideas porfavor!
  #5 (permalink)  
Antiguo 18/05/2012, 05:40
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Limpiar los valores de un array JQUERY

La verdad que sin la posibilidad de hacer las pruebas directamente, no puedo ver el problema. ¿El problema ocurre incluso luego de recargar la página?

Yo empezaría por corregir un par de cuestiones en javascript:

Reemplazá:
Código Javascript:
Ver original
  1. var dni=$("#name").find(':selected').val();
por:
Código Javascript:
Ver original
  1. var dni=$(this).val();

La varibale allFields no está definida en ningún lado.

Probá reseteando el formulario luego de que el script termine:
Código Javascript:
Ver original
  1. $('form').each (function(){
  2.   this.reset();
  3. });

Las fechas que me decís que salen mal, las obtiene por $_REQUEST, lo cual indicaría que tu problema está más bien en PHP.
__________________
nahueljose.com.ar
  #6 (permalink)  
Antiguo 21/05/2012, 02:22
Avatar de Lucieta86  
Fecha de Ingreso: noviembre-2010
Mensajes: 45
Antigüedad: 14 años
Puntos: 1
Respuesta: Limpiar los valores de un array JQUERY

Obtener mail, no influye en el formulario, tan solo muestra el email del responsable seleccionado.

He añadido el código para resetear el formulario, y no ha funcionado...

Yo tambien pienso que el error esta en PHP, pero no se donde, y no lo comprendo, porque es un script que llama a otro, y este otro llama al último, el primero funciona bien, y el segundo no y los dos estan echos del mismo modo...

Gracias por la ayuda! :)

Alguna sugerencia mas?

Etiquetas: ajax, funcion, input, limpiar
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:32.