Javascript onkeyup延迟函数调用

ZeD*_*ino 2 javascript events timer javascript-events

我想创建一个触发onkeyup事件的javascript函数,它的任务是调用一个主解析器函数,但只有在没有键被触发至少x毫秒时,其中x是函数参数.

例如:

我们有HTML代码

<body>
    <input type="text" id="suggestion" onkeyup="callMe(200);"/>
</body>
Run Code Online (Sandbox Code Playgroud)

和javascript类似:

<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>
Run Code Online (Sandbox Code Playgroud)

因此,在我输入警报时,除非您至少输入x ms,否则不会调用警报.

Sha*_*ard 8

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

要实现这一点,最好使用"包装"功能:

<input type="text" id="suggestion" onkeyup="DelayedCallMe(200);"/>
Run Code Online (Sandbox Code Playgroud)

和JavaScript:

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

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

现场测试案例.