如何等到用户在文本输入中写下来调用函数之后?

Gab*_*yer 20 html javascript

我正在设计一个网站,我希望能够在最后一次用户输入后1秒钟调用一个函数.我尝试使用onKeyUp,但在第一次击键后等了1秒.

有谁知道这怎么可能?

CMS*_*CMS 46

另一种类似的方法,没有全局变量:

var typewatch = function(){
    var timer = 0;
    return function(callback, ms){
        clearTimeout (timer);
        timer = setTimeout(callback, ms);
    }  
}();    
Run Code Online (Sandbox Code Playgroud)

...

<input type="text" onKeyUp="typewatch(function(){alert('Time elapsed!');}, 1000 );" />
Run Code Online (Sandbox Code Playgroud)

你可以在这里使用这个片段.


jim*_*imr 19

您可以使用keyDown(或keyUp)事件将函数设置为在1秒内运行,如果用户在该秒内键入另一个键,则可以清除超时并设置新的超时.

例如

var t;    

function keyDown()
{
  if ( t )
  {
    clearTimeout( t );
    t = setTimeout( myCallback, 1000 );
  }
  else
  {
    t = setTimeout( myCallback, 1000 );
  }
}

function myCallback()
{
   alert("It's been 1 second since you typed something");
}
Run Code Online (Sandbox Code Playgroud)