Разрешить только буквы в определенных полях оформления Woocommerce - PullRequest
0 голосов
/ 24 декабря 2018

Попытка принудительно ввести только буквы (возможно, также с неанглийскими символами) в поле проверки Woocommerce, Имя.у нас часто бывают клиенты старшего возраста, поэтому нам нужно заранее контролировать ввод данных пользователем и предотвращать ошибки.

Что я делаю не так?

ПРИМЕЧАНИЕ. Мне известно о ветке пользовательской проверки Пользовательская проверка полей проверки WooCommerce ... но кажется, что это должно быть намного проще и конкретнее решить?

Использовал код Businessbloomers для принудительного набора чисел только в поле Почтовый индекс (работает нормально).ИСТОЧНИК: https://businessbloomer.com/woocommerce-change-input-type-checkout-fields/

function bbloomer_change_checkout_field_input_type() {
echo "<script>document.getElementById('billing_postcode').type = 'number'; 
</script>";
}
add_action( 'woocommerce_after_checkout_form', 'bbloomer_change_checkout_field_input_type');

Для Fname я изменил тип ввода на «буква» ... но без результата (все еще в состоянии вводить числа).Поменяйте местами 'type' для 'pattern', как показано ниже, но не повезло.

function JBC_Force_letters_in_fname_field() {
echo "<script>document.getElementById('billing_first_name').pattern='[A- Za-z]';</script>";

}
add_action( 'woocommerce_after_checkout_form', 'JBC_Force_letters_in_fname_field');
  • Ожидается: David
  • Получение / разрешение: Dav1D3

1 Ответ

0 голосов
/ 24 декабря 2018

Следующее удалит числовые символы и некоторые знаки пунктуации из полей выставления счетов и отправки имени и фамилии, а также обработает почтовый индекс:

add_action( 'wp_footer', 'checkout_field_name_validator_script');
function checkout_field_name_validator_script() {
    // Only on checkout page
    if( ! ( is_checkout() && ! is_wc_endpoint_url() ) ) return;
    ?>
    <script>
    jQuery(function($){
        var b = '#billing_',    s = '#shipping_',   f = 'first_',   l = 'last_',
            n = 'name',         p = 'postcode',     c = ',';

        // Postcode fields
        $(b+p+c+s+p).bind('keyup blur',function(){
            $(this).val($(this).val().replace(/[^0-9]+/,''));
        });

        // First and Last name fields
        $(b+f+n+c+b+l+n+c+s+f+n+c+s+l+n).bind('keyup blur',function(){
            $(this).val($(this).val().replace(/[0-9.,;:?!]+/,''));
        });
    });
    </script>
    <?php
}

Код входит в файл function.php вашего активногодетская тема (или активная тема).Проверено и работает.

...