【发布时间】:2021-07-11 04:24:59
【问题描述】:
我想对表单域的电子邮件地址应用一些条件。电子邮件地址字段是可选的。条件是-
- 电子邮件字段为空时不显示任何错误。
- 但是只有当email字段有值+邮件格式不匹配时才会出现错误。
我用下面的 jQuery 代码做得很好。但这就是问题所在 - 当我应用此条件时 [ !$("#billing_email").val().match(/^\b[A-Z0-9._%-]+@[A-Z0 -9.-]+.[A-Z]{2,4}\b$/i ) ],即使email字段为空,邮件地址仍然是必填项!但邮件字段不是必需的。
我该如何解决这个问题?
$('form.checkout').on('submit', function () {
if ( $("#billing_email").val()!== '' && !$("#billing_email").val().match(/^\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i )) {
if ( $("#billing_email").parent().next(".error").val() !== '') {
$("#billing_email").parent().after("<span class='error'>Invalid email...</span>");
$("#billing_email").focus(); //Focus on field
}
}
else {
$("#billing_email").parent().next(".error").remove();
}
});
【问题讨论】:
-
您是否检查过电子邮件字段不包含任何空格?如果它包含任何空格,则在检查条件之前修剪值。
-
请解释一下....
-
" "== ""这个条件将在 js 中评估为 false,因为第一个字符串包含空格。现在$("#billing_email").val()将有任何空间然后$("#billing_email").val() != ""将返回 true 并且将检查第二个条件,这可能是 false 。所以试试$("#billing_email").val().trim() !== ''这样的条件 -
不能正常工作...
标签: jquery woocommerce