Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Como controlar la ejecucion de una funcion varias veces.

Estas en el tema de Como controlar la ejecucion de una funcion varias veces. en el foro de Frameworks JS en Foros del Web. hola chicos, no creo que el titulo sea claro, pero el problema es el siguiente: Sin entrar en codigos complicados voy a tratar ser claro. ...
  #1 (permalink)  
Antiguo 01/03/2012, 13:26
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Como controlar la ejecucion de una funcion varias veces.

hola chicos, no creo que el titulo sea claro, pero el problema es el siguiente:

Sin entrar en codigos complicados voy a tratar ser claro.

Es un buscador con un input y un table o select que se completa con la busqueda

El campo input donde empiezan a escribir por ejemplo: LOP ( LOPEZ).
ejecuta esta funcion
Código Javascript:
Ver original
  1. $('#input').keyup(function(){
  2.  
  3.       $.post(
  4.                    'url',
  5.                    {variables:variables},
  6.                    function(data){
  7. //codigo que completa la tabla.
  8.                    },json);
  9.  
  10.  
  11. });

El problema es que cada vez que escriben una letra, se ejecuta la funcion y recibe la respuesta por metodo JSON. ¿Q tiene de malo esto?

Bueno el problema es el siguiente:

el archivo.php

primero busca por la L
despues por LO
despues por LOP
despues por LOPE
y por ultimo por LOPEZ

por una diferencia de segundo PUEDE no simpre traerme estos resultados:

LO (23 ms)
LOP (33 ms)
LOPEZ (5 ms)
L (55 ms)
LOPE(15 ms)

O peor aun como la L me traee mas resultados puede que me lo traiga a lo ultimo.
Si el usuario tipeara despacio todas las letras el error no se notaria, pero hay usuario rapidos y se dan cuenta del error.

Alguna funcion o idea como controlar esto?

Gracias desde ya.
__________________
Mono programando!
twitter.com/eguimariano
  #2 (permalink)  
Antiguo 01/03/2012, 14:00
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Como controlar la ejecucion de una funcion varias veces.

Hola,

Tuve el mismo problema hace un tiempo y lo que hice fue que se ejecute la llamada al archivo.php solo cuando pasen 1.5 segundos después de pulsar una tecla, lo hice así:



Código Javascript:
Ver original
  1. var retraso;
  2. $("#input").keydown(function(){
  3.     clearTimeout(retraso); 
  4. });
  5.  
  6. $("#input").keyup(function(){
  7.     retraso = setTimeout("buscar()" ,1500);
  8.     }
  9. });
  10.  
  11. function buscar(){
  12.     $.post(
  13.               'url',
  14.               {variables:variables},
  15.                function(data){
  16. //codigo que completa la tabla.
  17.               },json);
  18. }

Espero que te sirva.

Saludos.
  #3 (permalink)  
Antiguo 01/03/2012, 14:47
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Como controlar la ejecucion de una funcion varias veces.

Excelente codigo me sirvio mucho, solo lo modifico un poco para evitar conflictos:

Código Javascript:
Ver original
  1. var retraso;
  2. $("#input").keydown(function(){
  3.     clearTimeout(retraso);  
  4. });
  5.  
  6. $("#input").keyup(function(){
  7.     retraso = setTimeout(function(){
  8.     $.post(
  9.               'url',
  10.               {variables:variables},
  11.                function(data){
  12. //codigo que completa la tabla.
  13.               },json)
  14. } ,1500);
  15.     }
  16. });
__________________
Mono programando!
twitter.com/eguimariano

Etiquetas: jquery
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 09:14.