我想创建一个触发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 ms,否则不会调用警报。
答案 0 :(得分:8)
您可以使用计时器,每次都需要清除以前的计时器。
要实现这一点,最好使用“包装”功能:
<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毫秒执行该功能。
答案 1 :(得分: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>