Javascript jQuery单击事件延迟

Javascript jQuery单击事件延迟,javascript,jquery,Javascript,Jquery,我有一个按钮,可以触发(1)应用优惠券代码和(2)提交整个付款表格 问题是,申请优惠券代码需要几秒钟的时间,所以在提交整个表单进行支付后申请优惠券代码也需要几秒钟的时间。如何延迟点击第二个付款按钮,以便首先应用优惠券代码按钮 <script type="text/javascript"> jQuery('.js-coll-button2').click(function(e) { e.preventDefault(); jQuery('#sc_checkout_form_1'

我有一个按钮,可以触发(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>

jQuery('.js-coll-button2')。单击(函数(e){
e、 预防默认值();
jQuery('#sc#u checkout_form_1')。查找('.sc coup apply btn')。单击();
jQuery(“#sc#U checkout_form_1”)。查找(“.sc payment btn”)。单击();
});

那是不明智的。你不能保证一定的时间总是足够的。这取决于客户端的计算机和连接,如果第一个操作返回错误怎么办

最好的方法是仅在第一个函数完成后才启动第二个函数

Edit:我从未使用过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>

函数doCoupon(){
返回$.ajax(…执行条带调用…);
}
函数doAnotherThing(){
返回$.ahax(…调用其他东西…);
}
函数handleError(){
// ... 
}
jQuery(#sc#u checkout_form_1.sc coup apply btn”)。单击(doCoupon);
jQuery(“#sc#U checkout#U form#U 1.sc payment btn”)。单击(执行其他操作);
jQuery('.js-coll-button2')。单击(函数(e){
e、 预防默认值();
doCoupon().success(doNotherthing).error(handleError);
});

将第二次单击代码放入
setTimeout
closure函数中

如果只需要一个简单的延迟,我认为jQuery可以做到这一点:

或者根据其他答案使用
setTimeout


不过,仅仅依靠超时/等待并不是一个可靠的解决方案,请参见以下答案:

您可以使用setTimeout(function(){},millides)Hi!我应该在哪里包括setTimeout代码?那将是理想的。我该怎么做?优惠券代码是您的还是外部服务?@pdawson90更新了我的代码。请不要使用Yassine Housini的方法,这是一种不好的做法。@pdawson90我同意Cravo,你应该使用他的回答谢谢@Cravo-我正在尝试这个解决方案,但不确定在.ajax()之后应该添加什么。我还需要允许付款按钮提交,如果没有在优惠券字段中输入任何内容,但不确定这是否需要反映在代码中。错,错,错!这不是使用此类服务的正确方式!
setTimeout(function() {
    // Second click
}, seconds * 1000);
jQuery('#sc_checkout_form_1').find('.sc-payment-btn').delay(1000).click();