jQuery单击“事件延迟”
jQuery Click Event Delay
我有一个按钮,它触发(1)优惠券代码的应用程序和(2)提交整个付款表单。
问题是优惠券代码需要几秒钟才能应用,所以在整个表单提交付款后才应用。我怎样才能延迟点击第二个付款按钮,以便先应用优惠券代码按钮?
<script type="text/javascript">
jQuery('.js-coll-button2').click(function(e) {
e.preventDefault();
jQuery('#sc_checkout_form_1').find('.sc-coup-apply-btn').click();
jQuery('#sc_checkout_form_1').find('.sc-payment-btn').click();
});
</script>
那是不明智的。你不能保证一定的时间总是足够的。这取决于客户端的计算机和连接,如果第一个操作返回错误怎么办?
最好的方法是只在第一个函数完成时才触发第二个函数。
编辑:我从来没有使用过Javascript的Stripe,但是API手册清楚地说,每个REST调用返回一个代码。
并且,您不应该尝试强制单击,而应该使用函数代替。将你的功能与按钮分离!
<script type="text/javascript">
function doCoupon() {
return $.ajax(... do your stripe call ...);
}
function doAnotherThing() {
return $.ahax(... call your other thingie... );
}
function handleError() {
// ...
}
jQuery("#sc_checkout_form_1 .sc-coup-apply-btn").click(doCoupon);
jQuery("#sc_checkout_form_1 .sc-payment-btn").click(doAnotherThing);
jQuery('.js-coll-button2').click(function(e) {
e.preventDefault();
doCoupon().success(doAnotherThing).error(handleError);
});
</script>
setTimeout(function() {
// Second click
}, seconds * 1000);
将第二个点击代码放入setTimeout
闭包函数
如果你想要的只是一个简单的延迟,我认为jQuery可以做到这一点:https://api.jquery.com/delay/
jQuery('#sc_checkout_form_1').find('.sc-payment-btn').delay(1000).click();
或者根据其他答案使用setTimeout
。
仅仅依赖于超时/等待并不是一个保证的解决方案,但是,看看这个答案:https://stackoverflow.com/a/32007018/15667
相关文章:
- 实现延迟的jquery更改事件处理程序
- 延迟单击事件,直到AJAX完成
- HTML5相机缓冲和延迟(延迟镜像)
- Javascript“Firefly”背景导致网站延迟延迟
- JavaScript 事件处理具有延迟的滚动事件
- 将单击事件附加到按钮或链接上的类,该按钮或链接会触发 AJAX 帖子,然后延迟并继续原始操作
- 我想要“鼠标滚轮事件延迟”
- 使用Facebook's EventEmitter是一种让延迟侦听器接收已经发出的事件的方法
- 如何模拟单击事件以延迟循环浏览幻灯片
- JavaScript 在自定义事件中延迟
- 触发自定义 jQuery 事件并延迟它
- 覆盖React OnClick事件,延迟300ms
- 鼠标滚轮事件的延迟
- 在移动设备上使用jcarousel框架时,在pageshow()事件上延迟几秒钟
- 缩短触摸屏设备上onclick事件的延迟
- 如何在调用事件后延迟函数的执行
- JavaScript / jQuery鼠标悬停事件与延迟
- 减少滚动事件的延迟
- onkeyup事件触发延迟
- 移动设备中的滚动事件触发延迟