Javascript 单击3秒后再次自动单击
单击3秒后再次自动单击。你为什么不工作Javascript 单击3秒后再次自动单击,javascript,jquery,Javascript,Jquery,单击3秒后再次自动单击。你为什么不工作 $(document).on("click", "input[name='submit']", setTimeout(function(){ $(this).trigger('click'); }, 3000)); 我发现您的代码有两个问题: 首先,您正在为回调输入setTimeout。setTimeout返回它生成的计时器的int id。 因此,基本上你现在拥有的是: .on('click', selector, 123); 这显然行不通
$(document).on("click", "input[name='submit']", setTimeout(function(){
$(this).trigger('click');
}, 3000));
我发现您的代码有两个问题: 首先,您正在为回调输入setTimeout。setTimeout返回它生成的计时器的int id。 因此,基本上你现在拥有的是:
.on('click', selector, 123);
这显然行不通。如果希望稍后执行代码,请将setTimeout放在回调中
.on('click', selector, function() {
setTimeout(myFunc, 3000);
});
然后您的回调在单击时运行,并生成计时器
其次,我假设您希望这个
在回调中引用单击的对象,而不是窗口
。。因此,您必须将thisArg传递给setTimeout或在父作用域中定义它。。或者使用不绑定新thisArg的箭头函数。为了简单起见,我建议使用箭头函数
setTimeout( () => {
$(this).trigger('click');
}, 3000);
我发现您的代码有两个问题: 首先,您正在为回调输入setTimeout。setTimeout返回它生成的计时器的int id。 因此,基本上你现在拥有的是:
.on('click', selector, 123);
这显然行不通。如果希望稍后执行代码,请将setTimeout放在回调中
.on('click', selector, function() {
setTimeout(myFunc, 3000);
});
然后您的回调在单击时运行,并生成计时器
其次,我假设您希望这个
在回调中引用单击的对象,而不是窗口
。。因此,您必须将thisArg传递给setTimeout或在父作用域中定义它。。或者使用不绑定新thisArg的箭头函数。为了简单起见,我建议使用箭头函数
setTimeout( () => {
$(this).trigger('click');
}, 3000);
您需要检测哪些单击事件是手动的,哪些是自动的。因此,定义
timer
变量来完成这项工作。如果timer
等于false
则表示单击为手动,如果为true
则表示自动单击
请注意,当调用setTimeout
回调时,此
参考窗口,因此需要存储此
为变量(ele
)
var定时器=false;
$(文档)。在(“单击”,“输入[name='submit']”上,函数(e){
var ele=这个;
//第一次点击
如果(!计时器){
e、 预防默认值();
$(ele).prop(“已禁用”,真)
setTimeout(函数(){
定时器=真;
$(ele).prop(“禁用”,false).trigger('click');
}, 3000)
//第二次点击
}否则{
控制台日志(“提交表格”);
}
});代码>
您需要检测哪些单击事件是手动的,哪些是自动的。因此,定义timer
变量来完成这项工作。如果timer
等于false
则表示单击为手动,如果为true
则表示自动单击
请注意,当调用setTimeout
回调时,此
参考窗口,因此需要存储此
为变量(ele
)
var定时器=false;
$(文档)。在(“单击”,“输入[name='submit']”上,函数(e){
var ele=这个;
//第一次点击
如果(!计时器){
e、 预防默认值();
$(ele).prop(“已禁用”,真)
setTimeout(函数(){
定时器=真;
$(ele).prop(“禁用”,false).trigger('click');
}, 3000)
//第二次点击
}否则{
控制台日志(“提交表格”);
}
});代码>
为什么在超时时间内返回true?单击触发器将永远无法到达为什么返回true代码>在函数中?这将阻止函数的其余部分执行。setTimeout返回一个id。并以内联方式运行。您在这里看到的是$(文档)代码>为什么不在3 sek后提交单击?您想每3秒钟自动单击按钮一次或循环一次?为什么在超时时间内返回true?单击触发器将永远无法到达为什么返回true代码>在函数中?这将阻止函数的其余部分执行。setTimeout返回一个id。并以内联方式运行。您在这里看到的是$(文档)代码>为什么不在3 sek后提交单击?你想在每3秒钟后自动单击按钮一次或循环?这是必要的,在单击之后,3秒钟过去了,按钮消失了-这对于下载图像的及时性是必要的。我不确定这是一个问题还是一个一般性的解释。但我在这里所解释的将允许您这样做。这是必要的,在点击后,3秒钟过去了,按钮消失了-这是必要的,以便及时下载图像。我不确定这是一个问题还是一个一般性的解释。但我在这里解释的是允许你这么做的。如果第二次点击该道具被禁用,然后点击提交?@php如果你是说用户在3s结束前点击,选中updatedIf可在第一次单击后3秒后发送表单。表单将在3s后发送,并且在显示提交表单控制台消息时不会发送数据,也不会像往常一样重新加载页面,这是成功提交的标志。如果第二次单击该道具被禁用,然后单击提交?@php如果您是指用户在3s结束前单击,选中updatedIf可在第一次单击后3秒后发送表单。表单将在3秒后发送,并且在显示提交表单控制台消息时不会发送数据,也不会像往常一样重新加载页面,这是成功提交的标志。