Скрыть некоторые типы полей оформления заказа для определенного состояния биллинга c в WooCommerce - PullRequest
1 голос
/ 06 мая 2020

Я пытаюсь скрыть поле billing_address_1 при оформлении заказа, когда пользователь выбирает указанный c billing_state (в приведенном выше коде состояние должно быть «CA»), но мой код не работает. Также я хотел бы скрыть больше полей, например billing_address_2, но приведенный ниже код предназначен только для 1 поля.

Может ли кто-нибудь помочь мне решить эту проблему? Заранее большое спасибо!

// Conditional Show hide checkout fields based on chosen state
add_action( 'wp_footer', 'conditionally_hidding_billing_address_1' );
function conditionally_hidding_billing_address_1(){
    // Only on checkout page
    if( ! is_checkout() ) return;

    // HERE your state ID is "CA"
    $home_delivery = 'CA';
    ?>
    <script>
        jQuery(function($){
            // Choosen billing state selectors slug
            var billingState = 'input[name^="billing_state"]',
                billingStateChecked = billingState+':checked';

            // Function that shows or hide input select fields
            function showHide( actionToDo='show', selector='' ){
                if( actionToDo == 'show' )
                    $(selector).show( 200, function(){
                        $(this).addClass("validate-required");
                    });
                else
                    $(selector).hide( 200, function(){
                        $(this).removeClass("validate-required");
                    });
                $(selector).removeClass("woocommerce-validated");
                $(selector).removeClass("woocommerce-invalid woocommerce-invalid-required-field");
            }

            // Initialising: Hide if chosen billing_state is "CA"
            if( $(billingStateChecked).val() == '<?php echo $home_delivery; ?>' )
                showHide('hide','#billing_address_1' );

            // Live event (When billing state is changed)
            $( 'form.checkout' ).on( 'change', billingState, function() {
                if( $(billingStateChecked).val() == '<?php echo $home_delivery; ?>' )
                    showHide('hide','#billing_address_1');
                else
                    showHide('show','#billing_address_1');
            });
        });
    </script>
    <?php
}

1 Ответ

1 голос
/ 06 мая 2020
add_action( 'wp_footer', 'conditionally_hidding_billing_address_1' );

function conditionally_hidding_billing_address_1() {
            // Only on checkout page
            if ( !is_checkout() )
                return;

            // HERE your state ID is "CA"
            $home_delivery = 'CA';
            ?>
        <script>
            jQuery(function($){
                // Choosen billing state selectors slug
                //var billingState = '#billing_state',

                // Function that shows or hide input select fields
                var billingState = $('#billing_state').val();

                // Initialising: Hide if chosen billing_state is "CA"
                if( billingState == '<?php echo $home_delivery; ?>' )
                    showHide('hide','#billing_address_1' );

                // Live event (When billing state is changed)
            $( '#billing_state' ).on( 'change', function() {

                if( $('#billing_state').val() == '<?php echo $home_delivery; ?>' ){
                    showHide('hide','#billing_address_1');
                    showHide('hide','#billing_address_2');
                    $('label[for="billing_address_1"]').hide();
                }
                else{
                    showHide('show','#billing_address_1');
                    showHide('show','#billing_address_2');
                    $('label[for="billing_address_1"]').show();
                }
            });

                        function showHide( actionToDo='show', selector='' ){

                    if( actionToDo == 'show' )
                        $(selector).show( 200, function(){
                            $(this).addClass("validate-required");
                        });
                    else
                        $(selector).hide( 200, function(){
                            $(this).removeClass("validate-required");
                        });
                    $(selector).removeClass("woocommerce-validated");
                    $(selector).removeClass("woocommerce-invalid woocommerce-invalid-required-field");
                }

            });


        </script>
    <?php
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...