繁体   English   中英

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

[英]JavaScript: Form: Validating e-mail address and checking another field with Starts.With before sending

我是一个完全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字段中检查了除数字,加号,空格,连字符和点以外的任何字符,可能会更加有趣。

你怎么看?

首先回答你的问题:


编辑:如今JavaScript确实在String对象上具有startsWith函数


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 使用诸如我所描述的库之类的库时常已经进行了强大的检查。 因此,这是使用现有库的另一个好处。

您需要电话号码检查器功能以确保号码正确。 事情就这样了: http : //www.w3resource.com/javascript/form/phone-no-validation.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM