在提交表单之前,我想在验证输入的电子邮件地址是否是在电子邮件字段丢失焦点后立即检查输入的电子邮件地址。我尝试了很多过滤器
add_action('woocommerce_after_checkout_validation', 'rei_after_checkout_validation');
function rei_after_checkout_validation( $posted ) {
}
但提交表单后会触发过滤器。 请帮我解决一下。
答案 0 :(得分:1)
您在结帐过程中尝试挂钩。尝试使用此代码来实现您的功能。将它放在活动主题的functions.php文件中,并根据需要进行自定义。
add_action('woocommerce_checkout_process', 'is_email');
function is_email() {
$phone_number = $_POST['---your-email-field-name---'];
// your function's body above, and if error, call this wc_add_notice
wc_add_notice( __( 'Your email is not business.' ), 'error' );
}
答案 1 :(得分:1)
我已经使用下面的woocommerce hook.add在您的活动主题的functions.php文件中进行了验证。
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
?>
<script>
jQuery('#billing_email').on('blur', function() {
validationFunction();
});
function validationFunction() {
if(document.getElementById("billing_email").value!='')
{
console.log(document.getElementById("billing_email").value);
var re = /^([\w-\.]+@(?!gmail.com)(?!yahoo.com)(?!hotmail.com)(?!yahoo.co.in)(?!aol.com)(?!abc.com)(?!xyz.com)(?!pqr.com)(?!rediffmail.com)(?!live.com)(?!outlook.com)(?!me.com)(?!msn.com)(?!ymail.com)(?!att.net)(?!comcast.net)(?!facebook.com)(?!gmx.com)(?!googleemail.com)(?!hotmail.co.uk)(?!mac.com)(?!google.com)(?!mail.com)(?!sbcglobal.net)(?!verizon.net)(?!yahoo.co.uk)(?!email.com)(?!games.com)(?!gmx.net)(?!hush.com)(?!hushmail.com)(?!icloud.com)(?!inbox.com)(?!lavbit.com)(?!love.com)(?!hush.com)(?!pobox.com)(?!rocketmail.com)(?!safe-mail.net.com)(?!wow.com)(?!ygm.com)(?!email.com)(?!zoho.com)(?!fastmail.fm)(?!yandex.com)([\w-]+\.)+[\w-]{2,4})?$/;
if(re.test(document.getElementById("billing_email").value)==false)
{
jQuery('#error').remove();
jQuery('#billing_email_field label').addClass('wrongemail');
jQuery('#billing_email_field input.input-text').addClass('wrongemailborder');
jQuery('#billing_email_field').append('<span class="wrongemail" id="error" style="font-size: 14px;">Please Enter valid business email address.<span>');
jQuery('#billing_email_field label').removeClass('rightemail');
jQuery('#place_order').attr('disabled',true);
}
else
{
jQuery('#billing_email_field label').addClass('rightemailborder');
jQuery('#billing_email_field input.input-text').removeClass('wrongemailborder');
jQuery('#error').remove();
jQuery('#billing_email_field label').removeClass('wrongemail');
jQuery('#place_order').attr('disabled',false);
}
}
}
</script>
<?php
}
return $fields;
}
我将javascript模糊事件绑定到电子邮件文本字段,然后检查用户输入的电子邮件ID。