我在验证表单中的电子邮件输入时遇到了问题。
现在,如果他们没有输入电子邮件,或者输入错误,我可以提醒用户。但是,如果输入IS正确,它仍会警告输入不正确。
document.getElementById("frmContact").onsubmit = function() {
if (document.getElementById("email").value=="") {
alert("Please enter your email.")
return false;
} else if (document.getElementById("email").value !== "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$"){
alert("Please enter a valid email address.");
return false;
} else {
return true;
}
};
答案 0 :(得分:1)
您收到无效电子邮件提醒的原因是以下代码:
else if (document.getElementById("email").value !== "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$")
这表示如果id属性为“email”的输入标记的内容不包含以下字符串“^ [A-Za-z0-9 ._%+ - ] + @ [A-Za-z0 -9 .-] +。[A-Za-z] {2,4} $“然后提醒请输入有效的电子邮件地址。因此,如果您在没有引号的情况下剪切并粘贴该字符串,我会按照您的方式下注,如果其他方式将返回true,则点击提交。
你想要的是测试输入是否匹配正则表达式,如下所示:
var inputString = document.getElementById("email").value,
patt = new RegExp("^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$");
if (inputString === '') {
alert("Please enter your email.")
return false;
}
else if(!patt.test(inputString))
{//if the regex you specified matches its valid email(according to your regex) so negate and display error msg
alert("invalid e-mail");
return false;
}
else
{
return true;
}
注意:重要的是要知道regEx不会对所有有效的电子邮件地址进行数学计算,但它可能会得到最多,尽管我没有对它进行评估,但它确实在test@test.com上运行,无论价值多少。
答案 1 :(得分:0)
您正在使用正则表达式;你不想直接将电子邮件字符串与正则表达式字符串进行比较;你需要使用javascript的match()方法来测试你的正则表达式的值。例如:
var regex = "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$";
var matches = document.getElementById("email").value.match(regex);
if(!matches.length){
alert("bad email");
return false;
}
答案 2 :(得分:0)
试试这个:它根据有效性
返回布尔值document.getElementById("frmContact").onsubmit = function() {
if (document.getElementById("email").value=="") {
alert("Please enter your email.")
return false;
} else if (!validEmail(document.getElementById("email").value)){
alert("Please enter a valid email address.");
return false;
} else {
return true;
}
};
function validEmail(e) {
var filter = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/;
return String(e).search(filter) != -1;
}