【问题标题】:email validation javascript behaving differently电子邮件验证 javascript 行为不同
【发布时间】:2013-08-06 05:24:20
【问题描述】:
我正在尝试使用 javascript 验证电子邮件 ID。
代码如下:
if (!email) {
alert('empty value');
} else if (!ValidateEmail(email)) {
alert('invalid email');
}
我的jsFiddle
它工作得很好,所以我想为什么不把两个条件都变成一个条件
if ((!email) && (!ValidateEmail(email))) {
alert('Invalid value');
}
但这一次上面的脚本不起作用。 jsFiddle
谁能解释它为什么会这样?
【问题讨论】:
标签:
javascript
jquery
validation
email
【解决方案1】:
if ((email) && (!ValidateEmail(email)))
这应该是条件!!验证空电子邮件是没有意义的,对吧!因此这个条件(说当有一些电子邮件(非空)值但它不是有效值时)除了&&,如果任何一个条件是false,最终答案是false
要检查空电子邮件并为此提醒适当的消息,您必须保留第一个条件!
【解决方案2】:
这两个条件是不同的。脚本不再起作用的原因是因为并不总是满足这两个条件!一个可以,但不能同时另一个!在您的第一个代码示例中,只有在电子邮件变量为 false 或未设置时才进行验证。换句话说,保持原样!
【解决方案3】:
.val()(以及node.value)返回字符串,因此如果您的输入为空,它将返回一个空字符串
空字符串在 JavaScript 中被评估为真。
从你的小提琴中你可以简单地摆脱(!email),因为空字符串无论如何都不会匹配你的验证。
【解决方案4】:
这真的很容易,如果你在这里使用 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;
}