JavaScript:表单:验证电子邮件地址并在发送之前使用Starts.With检查另一个字段

时间:2013-11-30 14:12:33

标签: javascript forms validation email

我是一个完整的JavaScript菜鸟,但我一直在寻找解决方案已经有一段时间了,似乎无法找到它。

我想要做的是:在发送form之前,检查输入的电子邮件地址是否有效,并检查phone字段的输入是否以http://开头

验证电子邮件地址就像魅力一样。但是,第二部分不是。 form只是在没有alert或任何内容的情况下发送的。

有人可以开导我吗?谢谢!

function validate(){
    var email = document.getElementById('email').value;
    var phone = document.getElementById('phone').value;
    var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;

    if (!filter.test(email)) {
        alert('Please enter a valid e-mail address.');

        return false;
    }

    else if (phone.StartsWith("http://")) {
        alert('Please correct your phone number.');

        return false;
    }
}

对于任何想知道:这应该是一个“简单”的垃圾邮件拦截器。

如果phone字段被检查除了数字,加号,空格,连字符和点之外的任何字符,可能会更有趣......

你怎么看?

2 个答案:

答案 0 :(得分:4)

首先回答你的问题:


编辑:现在JavaScript确实有a startsWith function on the String object


JavaScript在String对象上没有'StartsWith'方法。您必须使用正则表达式。这是一个例子:

function validate() {
    var email = document.getElementById('email').value;
    var phone = document.getElementById('phone').value;

    var emailFilter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
    var phoneFilter = /^http:\/\//;

    if (!emailFilter.test(email)) {
        alert('Please enter a valid e-mail address.');
        return false;
    }

    if (!phoneFilter.test(phone)) {
        alert('Please correct your phone number.');
        return false;
    }

    return true;
}

我创建了一个jsfiddle来向您展示它是如何工作的:http://jsfiddle.net/cnVQe/1/

但是:最好使用声明式而非编程式方法来验证表单。有很多工具可以做到这一点。其中之一就是这个jQuery库,可以为您完成大部分繁重的列表:http://jqueryvalidation.org/

它只需将类添加到字段中,并让插件执行检查,错误显示和阻止表单提交。

只是补充一点:你的方法没有错,但如果表格越来越大,你想要检查更多的字段,你将不可避免地遇到其他人一遍又一遍地解决的复杂性。即使这意味着你使用额外的插件增加了额外的复杂性,一旦你开始使形式更大,它将是值得的。

另外:您的电子邮件地址检查的正则表达式不接受+符号,这是许多人用来创建特殊Gmail帐户的内容,例如john.doe+extraText@gmail.com。使用像我描述的那样的库经常会有强大的检查。这对使用现有库来说是一个额外的好处。

答案 1 :(得分:1)

您需要使用电话号码检查功能以确保号码正确无误。这就是:http://www.w3resource.com/javascript/form/phone-no-validation.php

相关问题