Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] evento onkeyup y tiempo.

Estas en el tema de evento onkeyup y tiempo. en el foro de Jquery en Foros del Web. Hola , primero de todo decir que estoy aprendiendo y no tengo estudios ... soy autodidacta . Así que les ruego tengan paciencia. En segundo ...
  #1 (permalink)  
Antiguo 11/04/2014, 11:37
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 7 meses
Puntos: 38
Pregunta evento onkeyup y tiempo.

Hola , primero de todo decir que estoy aprendiendo y no tengo estudios ... soy autodidacta . Así que les ruego tengan paciencia.

En segundo lugar les cuento :

Estoy realizando mi propia web , en la cual he realizado un buscador con un evento onkeyup el cual dispara una función ajax que pasa mis datos a un php y me trae los resultados de vuelta.

Hasta ahí todo bién! El problema viene que estoy haciendo una petición por cada letra ... y me gustaría hacer una petición por cada keyup cada p.ejem 2 segundos desde que el usuario aprieta una tecla...

entonces hice esta función que utiliza los metodos setimeout y cleartimeout :

Código Javascript:
Ver original
  1. function buscador(){
  2.                   var segundos=2000;
  3.                   clearTimeout(temp);
  4.           var temp = setTimeout(function(){
  5.               var buscoInput =  $('.busqueda').val();
  6.                   $.ajax({
  7.                    type: "POST",
  8.                    dataType: 'json',
  9.                    url: url,
  10.                    data: { mi envio buscoInput php },
  11.                    success: function(respuesta){mi respuesta php}    
  12.                    });
  13.             },segundos);
  14.           }

Teniendo en cuenta que tengo un evento onclick="busqueda()" .

Asi me funciona y hace lo que quiero , pero me envía una petición por cada pulsación ... la pregunta es.. como podría hacer para cancelar y re-setear el tiempo cuando la función vuelva a ser llamada?

Un saludo gracias!
  #2 (permalink)  
Antiguo 11/04/2014, 12:40
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 7 meses
Puntos: 38
Respuesta: evento onkeyup y tiempo.

Le estoy dando vueltas al tema... voy a intentar algo , he pensado que utilizando el
metodo beforeSend : de jquery ajax.. podría intentar hacer un temporizador que se re-seteara a los N segundos ... y después comprobar el estado con un if .. y si es true entonces que procese y si es false entonces que haga abort() .

Cualquier sugerencia es bienvenida!!
  #3 (permalink)  
Antiguo 13/04/2014, 06:16
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 7 meses
Puntos: 38
Respuesta: evento onkeyup y tiempo.

Bueno aquí dejo el código por si le puede ayudar a alguien ... finalmente encontré la solución!

Código Javascript:
Ver original
  1. <script>
  2. var peticion_en_curso = false; //aqui seteamos false como valor de entrada
  3. $("#miCajadeBusqueda").keyup(function() {
  4.     if (this.value.length > 2 && !peticion_en_curso) { //comprobamos que el user como minimo haya introducido 2 caracteres y que peticion_en_curso no sea true
  5.         peticion_en_curso = true;//cambiamos peticion en curso antes de enviar petición ajax
  6.         $.ajax({
  7.             type: "POST",
  8.             url: "tu_url",
  9.             dataType: "json",
  10.             success: function(data) {
  11.                 peticion_en_curso = false;//cuando se completa la peticion cambiamos de nuevo a false
  12.                 //Codigo respuesta!
  13.             }
  14.         });
  15.     }
  16. });
  17. </script>

Etiquetas: evento, funcion, input, javascript, js, onkeyup, 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 22:58.