JavaScript onKeyUp时间延迟

apz*_*000 3 javascript timedelay onkeyup

我需要一些关于我调用onKeyUp的JavaScript函数的帮助,它是一个Ajax函数,但每次我写任何字符时它调用函数并且它会降低页面性能并且每次检查它都是用户检查数据库.

我试过这个:

 var timer;
 function chk_me(){

   clearTimeout(timer);
   timer=setTimeout(function validate(){...},1000);
}
Run Code Online (Sandbox Code Playgroud)

但我的验证函数有一个参数,所以我无法传递它,我调用这样的函数:

<input type="text" name="usuario" id="usuario" class="required" onKeyUp="chk_me();" minlegth="4" value=/> 
Run Code Online (Sandbox Code Playgroud)

这样对吗?我该怎么办?

这是我的第一个问题,我希望大家都能理解

谢谢,Alberto

谢谢大家,因为我是新手,我不能用不同的答案来做,所以我用解决方案编辑了我的问题.我发现这个:http://bytes.com/topic/javascript/answers/451142-need-advice-acting-only-last-onkeyup-event-series并使用最后一个答案方法并添加一些代码,我留下你代码,就像它说这不是最好的方式,但如果你有其他方式,我将欣赏它,并在这里使用它是:

var keyCount = 0;
var timeoutCount = 0;

function handleKeyUp() // keyup handler
{
keyCount++;
setTimeout("compareCounts()", 500);
}

function compareCounts()
{
var usuario = document.profileForm.usuario.value;
timeoutCount++;
if (keyCount == timeoutCount)
{
xajax_checaUsuario(usuario);
}
}
Run Code Online (Sandbox Code Playgroud)

所以我以这种方式采取var任何建议,使其更好?

谢谢

gil*_*ly3 7

不要validate直接传递给setTimeout,而是从匿名函数中调用它:

var timer;
function chk_me(arg) {
    clearTimeout(timer);
    timer = setTimeout(function () {
        validate(arg);
    }, 1000);
}
Run Code Online (Sandbox Code Playgroud)