Я пытаюсь скрыть поле 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
}