使用javascript不提交表单验证

时间:2014-04-17 18:04:57

标签: javascript validation

我在验证表单中的电子邮件输入时遇到了问题。

现在,如果他们没有输入电子邮件,或者输入错误,我可以提醒用户。但是,如果输入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;
    }
};

3 个答案:

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