开发者社区 问答 正文

怎么防止每次输入都去调ajax?

家庭户号:<input type='text' name='jthh'/>
现在是想要实现我输入家庭户号ajax查一些东西,然后我用keyup监听,但是我不想每次输入都去查,想等用户输完等待一段时间后在去查,这个要怎么实现呢?

展开
收起
小旋风柴进 2016-05-31 08:29:21 1841 分享 版权
1 条回答
写回答
取消 提交回答
  • 大体的思路是,本来是立即去做doAjax()的,现在把它放到一个setTimeout()的延时任务。然后,每次触发keyup的时候用clearTimeout()取消上一个延时任务。 这样,当键盘事件连续、快速地触发的时候,是没有用的,只有当键盘输入停下,并过了至少一点时间之后,才会真正去执行ajax任务。

    比如原本是:

    function doAjax() {
        // ajax
    }
    
    function handleKeyUp(event) {
        doAjax();
    }
    修改为:
    
    var timeFlag = null;
    
    function doAjax() {
        // ajax
    }
    
    function handleKeyup(event) {
        clearTimeout(timeFlag);
        timeFlag = setTimeout(doAjax, 1000);
    2019-07-17 19:21:11
    赞同 展开评论
问答分类:
问答地址: