0

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

这是代码:

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

我的jsFiddle

它工作得很好,所以我想为什么不把这两个条件都变成一个条件

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

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

任何人都可以解释为什么它的行为如此吗?

4

4 回答 4

0

这两个条件是不同的。脚本不再起作用的原因是因为并不总是满足这两个条件!一个可以,但不能同时另一个!在您的第一个代码示例中,只有在电子邮件变量为 false 或未设置时才进行验证。换句话说,让它保持原样!

于 2013-08-06T05:33:03.553 回答
0

.val()(以及node.value)返回字符串,因此如果您的输入为空白,它将返回一个空字符串

空字符串在 JavaScript 中被评估为真。

从你的小提琴中你可以简单地摆脱,(!email)因为空字符串无论如何都不会匹配你的验证。

于 2013-08-06T05:38:26.350 回答
0
if ((email) && (!ValidateEmail(email)))

应该是这个条件!!验证空电子邮件是没有意义的,对吧!因此这个条件(说当有一些电子邮件(非空)值但它不是有效值时)除了&&如果任何一个条件是false最终答案是false

并检查空电子邮件并为此提醒适当的消息,您必须保留第一个条件!

于 2013-08-06T05:29:07.537 回答
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;
  }
于 2015-10-16T11:03:46.990 回答