Javascript onkeyup延迟函数调用 [英] Javascript onkeyup delayed function call

查看:510
本文介绍了Javascript onkeyup延迟函数调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想制作一个触发onkeyup事件的javascript函数,它的任务是调用一个主要的解析器函数,但是只有当至少x毫秒没有键被触发时,x是函数参数。



例如:



我们有html代码

 <身体GT; 
< input type =textid =suggestiononkeyup =callMe(200);/>
< / body>

和javascript类似:

 < script type =text / javascript> 
函数callMe(ms)
{
//等待至少x ms然后调用主逻辑函数
//例如域();
alert(我在超时后被调用); //用于测试目的
}
< / script>

所以当我打字时,不会调用警报,直到你不输入任何内容至少x ms。

解决方案

您可以使用定时器,您还需要每次清除以前的计时器。



为了实现这一点,更好地使用wrapper功能:

 < input type =textid =suggestiononkeyup =DelayedCallMe(200);/> 

而JavaScript:

  var _timer = 0; 
函数DelayedCallMe(num){
if(_timer)
window.clearTimeout(_timer);
_timer = window.setTimeout(function(){
callMe(num);
},500);
}

这将在最后一次启动事件后500毫秒执行该功能。 p>

实时测试用例


I want to make a javascript function that fires onkeyup event and its task is to call a main resolver function but only if no keys are fired for at least x miliseconds where x is the functions parameter.

For instance:

we have html code

<body>
    <input type="text" id="suggestion" onkeyup="callMe(200);"/>
</body>

and javascript something like:

<script type="text/javascript">
    function callMe(ms)
    {
        //wait at least x ms then call main logic function
        // e.g. doMain();
        alert("I've been called after timeout"); //for testing purposes
    }
</script>

So while i'm typing the alert won't be called until you don't type anything for at least x ms.

解决方案

You can use a timer, you also need to clear the previous timer each time.

To achieve this, better use "wrapper" function:

<input type="text" id="suggestion" onkeyup="DelayedCallMe(200);"/>

And the JavaScript:

var _timer = 0;
function DelayedCallMe(num) {
    if (_timer)
        window.clearTimeout(_timer);
    _timer = window.setTimeout(function() {
        callMe(num);
    }, 500);
}

This will execute the function 500 milliseconds after the last key up event.

Live test case.

这篇关于Javascript onkeyup延迟函数调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆