Javascript onkeyup 延迟函数调用

标签 javascript events timer dom-events

我想创建一个触发 onkeyup 事件的 Javascript 函数,它的任务是调用主解析器函数,但前提是至少 x 毫秒内没有触发任何键,其中 x 是函数参数。

例如:

我们有html代码:

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

和 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>

因此,当我输入时,警报不会被调用,直到您至少 x 毫秒内没有输入任何内容。

最佳答案

可以使用定时器,也需要每次清空前一个定时器。

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

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

还有 JavaScript:

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

这将在最后一次按键事件后 500 毫秒执行函数。

Live test case .

关于Javascript onkeyup 延迟函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13910844/

相关文章:

c++ - Pthread 阻塞/可更新计时器

javascript - 按两个字段排序,但第二个字段取决于 PHP 中的条件

javascript - AmCharts - 无法读取未定义的 'time' 的属性

list - Flex4列表项双击事件

javascript - 移相器 : How to use a simple timer from 0 to 3

Matlab GUI 秒表

javascript - 单击按钮时拼接不移除

javascript - 将图像转换为本地存储的 DataURL 时删除了 EXIF?

WPF MVVM - ViewModel 是否可以相互通信?

c# - 事件中的调度程序只会调用一次 C#