簡體   English   中英

在 Woocommerce 購物車頁面中自動更新購物車數量變化

[英]Auto update cart on quantity change in Woocommerce cart page

使用“貨到付款”時,我有 5 美元的費用會被添加到訂單總額中。 切換到“銀行轉帳”時應取消此費用。 當我通過更改帳單郵政編碼觸發訂單審核表進行更新時,這筆費用就會被刪除。 但我還需要在選擇不同的支付網關時觸發它。

這是我當前的代碼:

<script>
    $('#payment_method_bacs').on('click', function() {
    $( 'body' ).trigger( 'update_checkout' );})
</script>

有任何想法嗎?

您可以按照此通過 AJAX 更新購物車。 這是鏈接

jQuery(function( $ ) {
    $( "form.checkout" ).on( "click", "input.qty", function( e ) {//modify this to payment gateway radio button selection
      var data = {
      action: 'update_order_review',
      security: wc_checkout_params.update_order_review_nonce,
      post_data: $( 'form.checkout' ).serialize()
    };

    jQuery.post( add_quantity.ajax_url, data, function( response )
    {
      $( 'body' ).trigger( 'update_checkout' );
    });
  });
});

在上面的代碼中,而不是數量更新,只需添加您的付款網關單選按鈕選擇的更改事件

由於結賬的這部分(支付方式)是在后台更新的,所以你應該將點擊綁定到“body”,例如:

jQuery(document).ready(function(){
    jQuery('body').on('click', 'ul.payment_methods li', function(){
            console.log('payment method clicked');
    });
});

(未經測試!)

只是為了讓這個問題對將來在這里閱讀的任何人都有用..這是最終為我工作的腳本。 我從這個有用的指南中找到了答案。

    jQuery('div.woocommerce').on('click', 'input.qty', function(){ 

        jQuery("[name='update_cart']").trigger("click");

    }); 

為了避免客戶點擊這么多次,讓 ajax 調用這么多次:

 jQuery( function( $ ) {
    let timeout;
    $('body').on('change', 'input.qty', function(){
        if ( timeout !== undefined ) {
            clearTimeout( timeout );
        }
        timeout = setTimeout(function() {
            $("[name='update_cart']").trigger("click");
        }, 800 );
    });
} );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM