Ver Mensaje Individual
  #7 (permalink)  
Antiguo 02/05/2014, 23:39
dfmex
 
Fecha de Ingreso: octubre-2008
Mensajes: 147
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Alguna técnica delay eficiente para un input?

Cita:
Iniciado por Alexis88 Ver Mensaje
Sí puedes detectar la tecla que se pulse. En esta actualización, deshabilito la caja de texto cuando se pulsa la tecla ENTER: http://jsfiddle.net/6KeCw/
Alexis Muchas Gracias por tus amables respuestas;

He estado probando el código y fíjate que no encuentro como evitar que se ejecute la acción que ocurre al pasar 1.5 segundos si se ha ejecutado la de ENTER, modifiqué un poco el código y me quedó así:


Código Javascript:
Ver original
  1. <script type='text/javascript'>//<![CDATA[
  2.         window.onload=function(){
  3.             var input = document.getElementById("AutoUser"),
  4.                 intervalo,
  5.                 disabled = function(){
  6.                     return setTimeout(function(){
  7.                        ExpirarCDB();
  8.                     }, 1500);
  9.                 };
  10.                
  11.             input.addEventListener("keyup", function(e){
  12.                 if (e.keyCode == 13){
  13.                     EvaluarCDB(input.value);
  14.                     return;
  15.                 }
  16.                 clearTimeout(intervalo);
  17.                 intervalo = disabled();
  18.             }, false);    
  19.         }//]]>  
  20.  
  21. </script>


Lo que ocurre es que cuando se ejecuta el EvaluarCDB (debido al enter) ya no deseo que se ejecute el ExpirarCDB();

Es decir, si no existe un enter y demoré más de 1.5 segundos pues se ejecuta ExpirarCDB() . Hasta aquí es perfecto.

Si al escribir doy ENTER se ejecute EvaluarCDB() y hasta aquí también perfecto, sin embargo si entra en acción EvaluarCDB() deseo que ya no exista el evento de que pasen 1.5 segundos, es decir, que detenga ExpirarCDB() porque hubo enter...

De lo demás todo bien, va quedando de maravilla, ¿qué podría hacer para lograr este cambio final?