当前位置:  开发笔记 > 编程语言 > 正文

Woocommerce仅在选择了特定付款方式的情况下运行javascript

如何解决《Woocommerce仅在选择了特定付款方式的情况下运行javascript》经验,为你挑选了1个好方法。

我已经为Woocommerce开发了一个支付网关插件,它在很大程度上依赖于一些JavaScript,这些JavaScript会加载弹出窗口来捕获用户详细信息。仅当从单选按钮中选择该网关时,我才需要运行该javascript。由于某种原因,它不起作用。这是我的代码

jQuery(document).ready(function() {
  usingGateway();
  jQuery('form[name="checkout"] input[name="payment_method"]:checked').change(function(){
    usingGateway();
  });
});

function usingGateway(){
    console.log(jQuery("input[name='payment_method']:checked").val());
    if(jQuery('form[name="checkout"] input[name="payment_method"]:checked').val() == 'my_gateway'){
        console.log("Using my gateway");
        //Etc etc
    }else{
         console.log("Not using my gateway. Proceed as usual");
    }
}

似乎woocommerce以某种方式覆盖了javascript,因为即使选中了单选按钮,我的payment_method的console.log始终是未定义的。然后,IF块将被跳过,并且始终显示“不使用我的网关。当我注释掉IF语句时,支付网关可以正常工作。

但是我需要它工作,因为如果用户选择其他付款方式(甚至是BACS或离线付款),则javascript仍会加载弹出窗口,并尝试使用我的自定义网关处理付款。

更新:根据rnevius的评论,我检查了woocommerce checkout.js并将其从那里复制到我的插件javascript中:

var payment_methods = jQuery('.woocommerce-checkout').find( 'input[name="payment_method"]' );
if ( 0 === payment_methods.filter( ':checked' ).size() ) {
payment_methods.eq(0).attr( 'checked', 'checked' );
}

因此,基本上,如果尚未检查任何内容,woocommerce将强制检查第一项。不知道为什么我需要这样做,因为woocommerce已经在checkout.js中做到了,现在可以工作,但是如果我的网关还不是第一个选定的网关,那么“ change”功能仍然无法使用(当您更改到我的网关时)从另一个)。请帮忙。



1> Swarnendu Pa..:

尝试此操作以分配付款方式选择回调

jQuery(function(){
    jQuery( 'body' )
    .on( 'updated_checkout', function() {
          usingGateway();

        jQuery('input[name="payment_method"]').change(function(){
            console.log("payment method changed");
              usingGateway();

        });
    });
});


function usingGateway(){
    console.log(jQuery("input[name='payment_method']:checked").val());
    if(jQuery('form[name="checkout"] input[name="payment_method"]:checked').val() == 'my_gateway'){
        console.log("Using my gateway");
        //Etc etc
    }else{
         console.log("Not using my gateway. Proceed as usual");
    }
}   

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有