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

标签 javascript html dynamic checkbox timeout

我有一组复杂的动态 html 形式的复选框。每当用户单击一个复选框时,就会生成一个相当昂贵的查询并将其提交到远程服务器。 我想根据用户的下一步操作延迟此提交操作。如果用户快速点击多个复选框,所有第一次点击都应该被丢弃,只有最后一次被处理并在 1 秒左右后最终提交。 也许这是一个常见问题,但我以前从未使用过超时。

最佳答案

您尝试使用的方法称为去抖动。
我的 javascript 中通常有一个通用的去抖功能:

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 是超时。

应用上面的内容意味着 callbackFunction 在 1 秒超时时被调用,如果它以任何更短的间隔被调用,调用将被忽略。

关于javascript:如何在短时间间隔内单击多个复选框时延迟提交数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2928931/

相关文章:

javascript - 购物车数量变化时动态改变小计

javascript - 如何查看给定对象是否与从 firebase 返回的对象之一匹配

asp.net-mvc-3 - ExpandoObject、匿名类型和 Razor

javascript - TypeError : $(. ..).live 不是 MVC 中的函数

javascript - 尝试循环并从表中提取名称

javascript - 在 Javascript 中访问 SVG DOM : object tag vs XMLSerializer?

javascript - 更改设备方向时 CSS 失败

html - 如何处理移动屏幕和标签屏幕中宽度和高度为 100% 的背景图片?

css - 动态生成 Html 图形

jquery - 在动态显示/隐藏元素上应用 Jquery