我是一个完整的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
字段被检查除了数字,加号,空格,连字符和点之外的任何字符,可能会更有趣......
答案 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