Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript:当几个复选框在短时间间隔内单击时,如何延迟提交数据?_Javascript_Html_Dynamic_Checkbox_Timeout - Fatal编程技术网

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

javascript:当几个复选框在短时间间隔内单击时,如何延迟提交数据?,javascript,html,dynamic,checkbox,timeout,Javascript,Html,Dynamic,Checkbox,Timeout,我有一个复杂的动态html表单中的复选框数组。每当用户单击一个复选框时,就会生成一个相当昂贵的查询并提交到远程服务器。 我想根据用户的下一个操作延迟此提交操作。如果用户快速单击多个复选框,则应放弃所有第一次单击,仅处理最后一次,并在1秒左右后最终提交。 也许这是一个常见问题,但我以前从未处理过超时问题。您尝试使用的方法称为去抖动。 我的javascript中通常有一个通用的去盎司函数: var debounce=function(func, threshold, execAsap) {

我有一个复杂的动态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
是超时


应用上述方法意味着在1秒超时时调用callbackFunction,如果以更短的时间间隔调用,则忽略调用

您尝试使用的方法称为去抖动。
我的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
是超时


应用上述方法意味着在1秒超时时调用callbackFunction,如果以更短的时间间隔调用,则忽略调用

太快了,谢谢!已经在stackoverflow.com上回答过了。查看这里的注释版本的khaleds代码,以及更多:这很快,谢谢!已经在stackoverflow.com上回答过了。有关khaleds代码的注释版本以及更多信息,请参见此处: