我有一个按钮,触发(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>
答案 0 :(得分:3)
那是不明智的。您无法保证一定的时间总是足够的。这取决于客户端的计算机和连接,以及如果第一个操作返回错误怎么办?
执行此操作的最佳方法是仅在第一个函数完成时触发第二个函数。
编辑:我从未使用过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>
答案 1 :(得分:1)
setTimeout(function() {
// Second click
}, seconds * 1000);
将第二次点击代码放入setTimeout
关闭功能
答案 2 :(得分:0)
如果你想要的只是一个简单的延迟,我认为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