仅允许特定 Woocommerce 结帐字段上的字母

cmo*_*mob 3 php wordpress jquery checkout woocommerce

试图在 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');
Run Code Online (Sandbox Code Playgroud)

对于 Fname 我将类型输入更改为“字母”..但没有结果(仍然可以输入数字)。将“类型”替换为“模式”,如下所示,但没有运气。

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');
Run Code Online (Sandbox Code Playgroud)
  • 期待:大卫
  • 获取/允许:Dav1D3

Loi*_*tec 6

以下内容将从帐单和送货名字和姓氏结帐字段中删除数字字符和一些标点符号,并将处理邮政编码:

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
}
Run Code Online (Sandbox Code Playgroud)

代码位于活动子主题(或活动主题)的 function.php 文件中。测试和工作。