我正在尝试使用javascript验证电子邮件ID。
以下是代码:
if (!email) {
alert('empty value');
} else if (!ValidateEmail(email)) {
alert('invalid email');
}
我的jsFiddle
它工作正常,所以我想为什么不把两个条件都变成一个条件
if ((!email) && (!ValidateEmail(email))) {
alert('Invalid value');
}
但是这次上面的脚本不起作用。 jsFiddle
任何人都能解释为什么表现如此吗?
答案 0 :(得分:0)
if ((email) && (!ValidateEmail(email)))
这应该是条件!!对于验证空邮件没有意义,对吧!因此这个条件(如果有一些电子邮件(非空)值,但它不是有效的),除了在&&
中,如果任何一个条件是false
,最终答案是false
< / p>
并检查空电子邮件并提醒相应的消息,您必须保持第一个条件!
答案 1 :(得分:0)
这两个条件是截然不同的。脚本不再起作用的原因是因为并不总能满足这两个条件!一个可以,但不是同时另一个!在您的第一个代码示例中,您只会在电子邮件变量为false或未设置时进行验证。换句话说,保持原样!
答案 2 :(得分:0)
.val()
(以及node.value
)返回字符串,因此如果输入为空,则返回空字符串
在JavaScript中将空字符串评估为true。
你可以简单地摆脱(!email)
,因为空字符串无论如何都不符合您的验证。
答案 3 :(得分:0)
这将非常简单,如果您在这里使用Jquery示例: -
var emailpattern = /^[a-zA-Z]([a-zA-Z0-9_\-])+([\.][a-zA-Z0-9_]+)*\@((([a-zA-Z0-9\-])+\.){1,2})([a-zA-Z0-9]{2,40})$/;
if(!emailpattern.test($('#email').val())){
return false;
} else {
return true;
}