尝试在Woocommerce结帐字段“名字”中仅强制使用字母(可能还使用非英语字符)。 我们经常会有老客户,因此我们需要控制用户输入并事先防止错误。
我在做什么错了?
注意:我知道自定义验证线程Custom validation of WooCommerce checkout fields ...但是感觉这应该更简单,更具体地解决吗?
使用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,我将类型输入更改为'letter'..但没有结果(仍然能够输入数字)。 如下所示,将“类型”替换为“模式”,但是没有运气。
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');
答案 0 :(得分:1)
以下内容将从帐单和发货的姓氏和名字结帐字段中删除数字字符和一些标点符号字符,并将处理邮政编码:
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文件中。经过测试,可以正常工作。