Скрыть поля оформления заказа при выборе нескольких способов доставки в WooCommerceJquery

Программирование на jquery
Ответить
Anonymous
 Скрыть поля оформления заказа при выборе нескольких способов доставки в WooCommerce

Сообщение Anonymous »

Я использую код, который скрывает поля оформления заказа, если выбран метод доставки «Местный самовывоз»:

Код: Выделить всё

    // Conditional Show hide checkout fields based on chosen shipping methods
add_action( 'wp_footer', 'custom_checkout_field_script' );
function custom_checkout_field_script() {

// HERE your shipping methods rate IDs
$local_pickup = 'local_pickup:3';
$pickpoint = 'wc_custom_shipping_pickpoint';

$required_text = esc_attr__( 'required', 'woocommerce' );
$required_html = '*';
?>

jQuery(function($){
var ism = 'input[name^="shipping_method"]',         ismc = ism+':checked',
csa = 'input#ship-to-different-address-checkbox',
rq = '-required',       vr = 'validate'+rq,     w = 'woocommerce',      wv = w+'-validated',
iv = '-invalid',        fi = '-field',          wir = w+iv+' '+w+iv+rq+fi,
b = '#billing_',        s = '#shipping_',       f = '_field',
a1 = 'country',     a2 = 'address_1',   a3 = 'address_2',   a4 = 'postcode',    a5 = 'state',   a6 = 'city',
b1 = b+a1+f,        b2 = b+a2+f,        b3 = b+a3+f,        b4 = b+a4+f,        b5 = b+a5+f,    b6 = b+a6+f,
s1 = s+a1+f,        s2 = s+a2+f,        s3 = s+a3+f,        s4 = s+a4+f,        s5 = s+a5+f,    s6 = s+a6+f,
pickPoint = '',        localPickup = '';

// Utility function to shows or hide checkout fields
function showHide( action='show', selector='' ){
if( action == 'show' )
$(selector).show(function(){
$(this).addClass(vr);
$(this).removeClass(wv);
$(this).removeClass(wir);
if( $(selector+' > label > abbr').html() == undefined )
$(selector+' label').append('');
});
else
$(selector).hide(function(){
$(this).removeClass(vr);
$(this).removeClass(wv);
$(this).removeClass(wir);
if( $(selector+' > label > abbr').html() != undefined )
$(selector+' label > .required').remove();
});
}

// Initializing at start after checkout init (Based on the chosen shipping method)
setTimeout(function(){
if( $(ismc).val() == pickPoint ) // Chosen "Pick point" (Hiding "Delivery")
{
showHide('hide',b1 ); // Country
showHide('hide',b2 ); // Address 1
showHide('hide',b3 ); // Address 2
showHide('hide',b4 ); // Postcode
showHide('hide',b5 ); // State
showHide('hide',b6 ); // City
}
else if( $(ismc).val() == localPickup ) // Choosen "Local pickup"  (Hiding "Take away")
{
showHide('hide',b1);
showHide('hide',b2);
showHide('hide',b3);
showHide('hide',b4);
showHide('hide',b5);
showHide('hide',b6);
}
else
{
showHide('hide',b1);
showHide('show',b2);
showHide('show',b3);
showHide('show',b4);
showHide('show',b5);
showHide('show',b6);
}
}, 100);

// When shipping method is changed (Live event)
$( 'form.checkout' ).on( 'change', ism, function() {
if( $(ismc).val() == pickPoint )
{
showHide('hide',b1);
showHide('hide',b2);
showHide('hide',b3);
showHide('hide',b4);
showHide('hide',b5);
showHide('hide',b6);

if( $(csa).prop('checked') ) {
showHide('hide',s1);
showHide('hide',s2);
showHide('hide',s3);
showHide('hide',s4);
showHide('hide',s5);
showHide('hide',s6);
}
}
else if( $(ismc).val() == localPickup )
{
showHide('hide',b1);
showHide('hide',b2);
showHide('hide',b3);
showHide('hide',b4);
showHide('hide',b5);
showHide('hide',b6);

if( $(csa).prop('checked') ) {
showHide('hide',s1);
showHide('hide',s2);
showHide('hide',s3);
showHide('hide',s4);
showHide('hide',s5);
showHide('hide',s6);
}
}
else
{
showHide('hide',b1);
showHide('show',b2);
showHide('show',b3);
showHide('show',b4);
showHide('show',b5);
showHide('show',b6);

if( $(csa).prop('checked') ) {
showHide('hide',s1);
showHide('show',s2);
showHide('show',s3);
showHide('show',s4);
showHide('show',s5);
showHide('hide',s6);
}
}
});

// When "shipping to different address" is changed (Live event)
$(csa).click( function() {
if( $(ismc).val() == pickPoint && $(this).prop('checked') )
{
showHide('hide',b1);
showHide('hide',b2);
showHide('hide',b3);
showHide('hide',b4);
showHide('hide',b4);
showHide('hide',b6);

showHide('hide',s1);
showHide('hide',s2);
showHide('hide',s3);
showHide('hide',s4);
showHide('hide',s5);
showHide('hide',s6);
}
else if( $(ismc).val() == localPickup &&  $(this).prop('checked') )
{
showHide('hide',b1);
showHide('hide',b2);
showHide('hide',b3);
showHide('hide',b4);
showHide('hide',b4);
showHide('hide',b6);

showHide('hide',s1);
showHide('hide',s2);
showHide('hide',s3);
showHide('hide',s4);
showHide('hide',s5);
showHide('hide',s6);
}
else
{
showHide('hide',b1);
showHide('show',b2);
showHide('show',b3);
showHide('show',b4);
showHide('show',b4);
showHide('show',b6);

showHide('hide',s1);
showHide('show',s2);
showHide('show',s3);
showHide('show',s4);
showHide('show',s5);
showHide('show',s6);
}
});
});



Подробнее здесь: [url]https://stackoverflow.com/questions/70233762/hide-checkout-fields-when-selecting-multiple-delivery-methods-in-woocommerce[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»