Я пытаюсь реализовать некоторые условные поля при оформлении заказа в Woocommerce.
Цель: если пользователь выбирает определенное состояние (CO), измените текстовые поля BILLING / SHIPPING CITY и POSTCODE, чтобы выбрать поля.Доставка должна обновляться в соответствии со значением POSTCODE.
Я использую Jquery для обновления полей CITY и POSTCODE, когда выбрано определенное состояние.Это работает нормально, однако доставка не обновляется, когда поля изменяются для выбора полей типа - выбор другого почтового индекса из поля выбора приводит к вращающемуся графическому обновлению в таблице просмотра / доставки заказа, но ничего не обновляется, чтобы отразить выбранное значение.
Доставка обновлений в порядке, когда поле POSTCODE является стандартным текстовым полем и изменяется с помощью ввода с клавиатуры.
С чем я сейчас работаю:
function city_to_dropdown( $fields ) {
?>
<script type="text/javascript">
jQuery('#billing_state').on('change', function() {
if (jQuery("select#billing_state option:checked").val()=='CO') {
jQuery( document ).ready(function() {
jQuery("#billing_city").replaceWith('<select id="billing_city" name="billing_city" class="hi_select address-field" autocomplete="address-level1" data-placeholder="" tabindex="-1">' +
'<option value="" selected>- Select City -</option>' +
'<option value="TEST1">TEST1</option>' +
'<option value="TEST2">TEST2</option>' +
'<option value="TEST3">TEST3</option>' +
'<option value="TEST4">TEST4</option>' +
'<option value="TEST5">TEST5</option>' +
'</select>');
jQuery("#shipping_city").replaceWith('<select id="shipping_city" name="shipping_city" class="hi_select address-field" autocomplete="address-level1" data-placeholder="" tabindex="-1" >' +
'<option value="" selected>- Select City -</option>' +
'<option value="" selected>- Select City -</option>' +
'<option value="TEST1">TEST1</option>' +
'<option value="TEST2">TEST2</option>' +
'<option value="TEST3">TEST3</option>' +
'<option value="TEST4">TEST4</option>' +
'<option value="TEST5">TEST5</option>' +
'</select>');
jQuery("#billing_postcode").replaceWith('<select id="billing_postcode" name="billing_postcode" class="hi_select address-field" autocomplete="address-level1" data-placeholder="" tabindex="-1" >' +
'<option value="" selected>- Select Zip -</option>' +
'<option value="96734">96734</option>' +
'<option value="96744">96744</option>' +
'<option value="96795">96795</option>' +
'<option value="96863-MCB">96863-MCB</option>' +
'</select>');
jQuery("#shipping_postcode").replaceWith('<select id="shipping_postcode" name="shipping_postcode" class="hi_select address-field" autocomplete="address-level1" data-placeholder="" tabindex="-1">' +
'<option value="" selected>- Select Zip -</option>' +
'<option value="96734">96734</option>' +
'<option value="96744">96744</option>' +
'<option value="96795">96795</option>' +
'<option value="96863-MCB">96863-MCB</option>' +
'</select>');
} );
} else {
jQuery("#billing_city").replaceWith('<input type="text" class="input-text address-field " name="billing_city" id="billing_city" placeholder="" value="" autocomplete="address-level2">');
jQuery("#billing_postcode").replaceWith('<input type="text" class="input-text address-field " name="billing_postcode" id="billing_postcode" placeholder="" value="" autocomplete="postal-code">');
jQuery("#shipping_city").replaceWith('<input type="text" class="input-text address-field " name="shipping_city" id="shipping_city" placeholder="" value="" autocomplete="address-level2">');
jQuery("#shipping_postcode").replaceWith('<input type="text" class="input-text address-field " name="shipping_postcode" id="shipping_postcode" placeholder="" value="" autocomplete="postal-code">');
}
});
</script>
<?php
}
add_filter( 'woocommerce_after_checkout_billing_form', 'city_to_dropdown' );
Спасибо!