如何在WooCommerce结帐时根据国家/地区创建必填字段?

问题描述 投票:0回答:1

我已在结帐页面(billing_vat)中添加了一个自定义字段,并且当国家/地区设置为爱尔兰(IE)时需要提供该字段。

当前,我已更改标签以显示它与使用JavaScript的所有其他字段相同,并且已连接到'woocommerce_get_country_locale'以将IE更改为必填字段。

add_filter('woocommerce_billing_fields', 'dc_custom_billing_fields', 1000, 1);
function dc_custom_billing_fields( $fields ) {
    $fields['billing_vat'] = array(
        'label'        => 'VAT Number',
        'required'     => false,
        'type'         => 'text',
        'class'        => array( 'form-row-wide' ),
        'priority'     => 35,
    );

    return $fields;
}

add_filter( 'woocommerce_get_country_locale', 'dc_change_locale_field_defaults', 1000, 1 );
function dc_change_locale_field_defaults($countries) {
    $countries['IE']['billing_vat']['required'] = true;

    return $countries;
}

add_action( 'woocommerce_admin_order_data_after_shipping_address', 'dc_display_admin_order_meta', 10, 1 );
function dc_display_admin_order_meta($order) {
    echo '<p><strong>'.__('Billing VAT').':</strong> ' . get_post_meta( $order->get_id(), '_billing_vat', true ) . '</p>';
}

add_action( 'woocommerce_after_order_notes', 'dc_after_checkout_field' );
function dc_after_checkout_field() {
    ?>
    <script>
        (function($) {
            $(document).ready(function (){
                $('#billing_country').on('change',function() {
                    if ($('#billing_country').val() == 'IE') {
                        // Required
                        $('#billing_vat').prop('required', true);
                        $('label[for="billing_vat"] .optional').remove();
                        $('label[for="billing_vat"]').append('<abbr class="required" title="required">*</abbr>');
                    } else {
                        $('#billing_vat').removeProp('required');
                        $('label[for="billing_vat"] .required').remove();
                        $('label[for="billing_vat"]').append('<span class="optional">(optional)</span>');
                    }
                })
            });
        })(jQuery);
    </script>
    <?php
}

但是,当我提交表格时,国家/地区设置为爱尔兰,并且该字段为空,Woo并没有说此字段是必填字段。

php jquery wordpress woocommerce checkout
1个回答
0
投票

将您的代码替换为


0
投票

只需将以下代码段添加到您现有的代码段中,并希望您可以完成对爱尔兰的验证的管理工作

© www.soinside.com 2019 - 2024. All rights reserved.