【问题标题】:woocommerce prevent checkout submit on payment method changewoocommerce 阻止在付款方式更改时提交结帐
【发布时间】:2017-12-12 08:11:03
【问题描述】:

您好,我的结帐页面有一些问题,当我更改页面上的付款方式时,结帐订单会自动提交,而我想使用按钮手动提交。我尝试使用以下代码来禁用 ajax 调用,但似乎这不是 ajax 问题。

function script_disabled()
{
    wp_dequeue_script( 'wc-checkout' );
}

add_action('wp_enqueue_scripts', 'script_disabled');

【问题讨论】:

  • 在 checkout.js 中有在提交订单之前触发的事件处理程序。这些事件是 'checkout_place_order' 和 'checkout_place_order_' + wc_checkout_form.get_payment_method()。如果此事件处理程序的最后一个返回 false,则不会提交订单。
  • @MagentaCuda,那我该怎么办?

标签: php ajax wordpress woocommerce


【解决方案1】:

您对问题的描述有些不妥。使用单选按钮更改付款方式不应自动提交订单。在我的安装中,此操作仅显示或隐藏付款方式的相应窗格。显示的窗格实际上具有提交订单的按钮。下面的代码是防止提交 AJAX 调用的 jQuery 事件处理程序。但是,我认为这不是解决您的问题的正确方法。您所描述的行为不是 WooCommerce 结帐页面的工作方式。至少,它在我的安装中没有这样的行为,这对于结帐页面来说是非常标准的。

jQuery( 'form.checkout' ).on( 'checkout_place_order', function() {
    var $payment_method = jQuery( 'form.checkout input[name="payment_method"]:checked' ).val();
    if ( /* your condition, e.g. "$payment_method == 'paypal'" */ ) {
        // prevent the submit AJAX call
        alert( 'submit cancelled!' );
        return false;
    }
    // allow the submit AJAX call
    return true;
});

我不会使用此解决方案,因为我认为还有其他问题。

【讨论】:

猜你喜欢
  • 2018-01-26
  • 2018-08-30
  • 1970-01-01
  • 1970-01-01
  • 2020-05-28
  • 2021-05-27
  • 2017-08-19
  • 2017-08-13
相关资源
最近更新 更多