电子邮件验证javascript表现不同

时间:2013-08-06 05:24:21

标签: javascript jquery validation email

我正在尝试使用javascript验证电子邮件ID。

以下是代码:

 if (!email) {
        alert('empty value');
} else if (!ValidateEmail(email)) {
        alert('invalid email');
}

我的jsFiddle

它工作正常,所以我想为什么不把两个条件都变成一个条件

    if ((!email) && (!ValidateEmail(email))) {
        alert('Invalid value');
}

但是这次上面的脚本不起作用。 jsFiddle

任何人都能解释为什么表现如此吗?

4 个答案:

答案 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;
  }