Задать вопрос
@BladimirK

Woocommerce. Как скрыть поля на странице оформление заказа, при нажатии на радио кнопку?

Имеются радиокнопки:

add_action( 'woocommerce_before_checkout_billing_form', 'field_oplata' );
add_action( 'woocommerce_checkout_update_order_meta', 'save_field_oplata' );
function field_oplata( $checkout ){
	woocommerce_form_field( 'contactmethod', array(
		'type'          => 'radio',
		'required'	=> true, 
		'class'         => array('oplata-field', 'form-row-wide'),
		'label'         => 'Выбирите способ оплаты: ',
		'label_class'   => 'oplata-label',
		'options'	=> array( 
			'by_nall:1'	=> 'Оплата наличными', 
			'by_perevod:2'	=> 'Оплата банковским переводом',
			'by_karta:3'	=> 'Оплата банковским картой'
			)
		), $checkout->get_value( 'contactmethod' ) );
}
function save_field_oplata( $order_id ){
	if( !empty( $_POST['contactmethod'] ) )
		update_post_meta( $order_id, 'contactmethod', sanitize_text_field( $_POST['contactmethod'] ) );
}


Задача состоит в том, чтобы при нажатии на "Оплата наличными", скрывалось поле допустим "Адрес" (billing_address_1)

Уже пол дня с этим мучаюсь помогите XD

Пробовал подключать вот этот скрипт:
jQuery( 'body' ).on('updated_checkout', function () {//говорим, что при обновлении формы checkout надо дёрнуть нашу функцию
    var method = woocommerce_params.chosen_contactmethod;
       jQuery( 'select.contactmethod, input[name^=contactmethod][type=radio]:checked, input[name^=contactmethod][type=hidden]' ).each( function( index, input ) {
         method = jQuery( this ).val();
         } );
         switch (true) { //начинаем перебор вариантов и проверяем их
             case (method.indexOf('by_nall:1') >= 0 ):  //если наш метод Самовывоз будем выполнять этот участок кода
                 jQuery( '#billing_address_1_field,  #billing_city_field').hide(); //Прячем адрес
                 if (jQuery('#billing_address_1').val() === ''){ //если клиент не авторизован или у него нет адреса, нам что-то надо передать,т.к. поле адрес обязательное
                     jQuery('#billing_address_1').attr('value', 'Самовывоз'); //передадим туда строку "самовывоз"
                 }
                 break;
             case ( method.indexOf('by_karta:3') >= 0 ): // если наш метод доставки ПОчта России
                jQuery( '#billing_address_1_field,  #billing_city_field').show(); //Показываем все
                 break; 
                 default: // во всех остальных случаях прячем Почтовый индекс
                 jQuery('#billing_postcode_field').hide();
                 jQuery( '#billing_address_1_field, #billing_address_2_field, #billing_state_name_field, #billing_city_field').show(); //Показываем всё кроме индекса	
                   }            
 } );


Для подключения скрипта в functions.php использовал следующий код:
add_action( 'wp_enqueue_scripts', 'hide_fields_script' );
function hide_fields_script() {
	wp_enqueue_script( 'hide_shipping_fields', get_template_directory_uri() . "/hide_shipping_fields.js", array( 'jquery' ), GENERATE_VERSION, true );
}
  • Вопрос задан
  • 172 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы