Foros del Web » Programando para Internet » Javascript »

procesar tras terminar de escribir

Estas en el tema de procesar tras terminar de escribir en el foro de Javascript en Foros del Web. Buenas, resulta que tengo un input donde al escribir cada letra comprueba si existe ese nomre en un div... el problema es que a cada ...
  #1 (permalink)  
Antiguo 09/03/2011, 01:40
 
Fecha de Ingreso: junio-2009
Mensajes: 309
Antigüedad: 9 años, 9 meses
Puntos: 5
procesar tras terminar de escribir

Buenas, resulta que tengo un input donde al escribir cada letra comprueba si existe ese nomre en un div... el problema es que a cada letra (keyup) compruebo mediante una funcion, ademas de una cosa por ajax que tb necesito hacer...

Habria alguna forma de detectar cuando el usuario ha terminado y solo ejecutarla esa vez y no a cada letra?
tengo una idea distante en la mente usando un timeout pero no se si es la mejor forma ni como implementarla bien... :S

Gracias de antemano!
  #2 (permalink)  
Antiguo 09/03/2011, 02:38
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 14 años, 8 meses
Puntos: 53
Respuesta: procesar tras terminar de escribir

Te sirve el evento "blur"?? ese se dispara cuando el usuario sale de la caja de texto.

saludos
  #3 (permalink)  
Antiguo 10/03/2011, 14:00
 
Fecha de Ingreso: junio-2009
Mensajes: 309
Antigüedad: 9 años, 9 meses
Puntos: 5
Respuesta: procesar tras terminar de escribir

no, por que quiero que sea aligual que facebook, el sistema de busquedas que te sale unas sugerencias de resultados, pero me parece que facebook tb hace la consulta a cada letra... alomejor el buscador de google es el que lo hace mas logicamente.. por que no tiene sentido hacer una peticion por cada letra si no se ha terminado...

No puede ser en el blur por que despues apretando la flecha de abajo va moviendose por las sugerencias. Con lo que si es en el blur estoy fuera y ya no funciona... Ademas de que quedaria muy mal.

Alguna idea mas?
  #4 (permalink)  
Antiguo 10/03/2011, 19:51
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 9 años, 10 meses
Puntos: 1485
Respuesta: procesar tras terminar de escribir

buenas...

no lo he intentado pero es lo que se me ocurre. realizar la peticion mediante un temporizador setTimeout de tal modo que en cada pulsacion de la tecla cancelas el temporizador y creas uno nuevo. cuando el usuario no presiona una tecla por el periodo de tiempo establecido en setTimeout, entonces ahi es que se envia la peticion.

tambien se puede hacer mas complejo. por ejemplo, tienes una variable booleana para controlar la peticion, asumiendo que false indica que no hay ninguna peticion en espera y true lo contrario. de forma tal que cuando el usuario escribe algo se revisa el estado de la variable. si esta en true, no se realiza la peticion. luego que la peticion se complete se restaura la variable y se revisa si el valor del campo ha cambiado. en tal caso, vuelve a realizar la peticion cambiando el estado de la variable.

por supuesto, en estas dos ideas activadas mediante eventos del teclado.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 10/03/2011, 20:25
 
Fecha de Ingreso: abril-2009
Mensajes: 17
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: procesar tras terminar de escribir

Te recomendaria que elijas una o varias de estas opciones
( ) Cada 4 - o el numero que te parezca - letras presionadas
( ) Cuando se presione la flecha hacia abajo
( ) Cuando se presione la barra espaciadora - esto significa que busca por cada palabra
( ) Cuando se presione la tecla enter
  #6 (permalink)  
Antiguo 11/03/2011, 04:12
 
Fecha de Ingreso: junio-2009
Mensajes: 309
Antigüedad: 9 años, 9 meses
Puntos: 5
Respuesta: procesar tras terminar de escribir

ahora mismo tengo la primera y segunda adaptada, la del intro no me vale y la barra tampoco.
Zerokilled, la primera opcion de restaurar el timeout me gusta.

Pero mira que he encontrado con tu consejo. Resulta que tengo un plugin que utilizo para los timeouts y queria saber como se elimina un time creado, entonces en la documentacion me encunetro lo siguiente:
http://benalman.com/code/projects/jq...es/debouncing/

Vamos! justo lo que necesitaba en uno de los plugins que utilizo desde el primer dia en este proyecto y justo en el ejemplo que deseo. Perfecto!


La pagina oficial es http://benalman.com/projects/jquery-dotimeout-plugin/

Lo que hace al sobreescribir el timeout es eliminar el anterior, ahi está a 250 milisegundos, creo que a 1000 milisegundos irá bien.

Seguro que a otros tb le sirven.
  #7 (permalink)  
Antiguo 11/03/2011, 04:19
 
Fecha de Ingreso: junio-2009
Mensajes: 309
Antigüedad: 9 años, 9 meses
Puntos: 5
Respuesta: procesar tras terminar de escribir

Se implanta perfectiiiiisimamente. Solucionado!! :D Ya puedo dormir hoy jajaja.

Última edición por leif_sk8er; 11/03/2011 a las 04:25
  #8 (permalink)  
Antiguo 11/03/2011, 04:32
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 9 años, 10 meses
Puntos: 1485
Respuesta: procesar tras terminar de escribir

no soy amante de los frameworks por lo que no se bien como funciona dicho plugins pero seguramente es el mismo concepto que explicaba. en tu caso particular, mejor aun ya que estas usando un framework.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: procesar, terminar, tras
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:48.