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