3

我想创建一个触发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 毫秒内不输入任何内容,否则不会调用警报。

4

2 回答 2

9

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

为此,最好使用“包装器”功能:

<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 毫秒执行函数。

现场测试用例

于 2012-12-17T08:52:42.957 回答
1
<input type="text" id="suggestion" onkeyup="callMe(200);"/>
<script>
    var to;
    function callMe(ms) {
       clearTimeout(to);
       to = setTimeout(function(){
           alert("I've been called after timeout");
       }, ms);
    }
</script>

​

演示

于 2012-12-17T08:58:09.503 回答