代码之家  ›  专栏  ›  技术社区  ›  knb

javascript:当几个复选框在短时间间隔内单击时,如何延迟提交数据?

  •  2
  • knb  · 技术社区  · 16 年前

    我想根据用户的下一个操作延迟此提交操作。如果用户快速单击多个复选框,则应放弃所有第一次单击,仅处理最后一次,并在大约1秒后最终提交。 也许这是一个常见的问题,但我从来没有超时工作过。

    1 回复  |  直到 16 年前
        1
  •  0
  •   ekhaled    16 年前


    我的javascript中通常有一个通用的debounce函数:

    var debounce=function(func, threshold, execAsap) {
        var timeout;
        return function debounced () {
            var obj = this, args = arguments;
            function delayed () {
                if (!execAsap)
                    func.apply(obj, args);
                timeout = null; 
            };
            if (timeout)
                clearTimeout(timeout);
            else if (execAsap)
                func.apply(obj, args);
            timeout = setTimeout(delayed, threshold || 100); 
        }; 
    };
    


    在您的情况下,可能是这样的:

    $("checkbox").click(debounce(callBackFunction,1000));
    

    哪里 callbackFunction 是执行“昂贵的jquery”和 1000 是超时。