Javascript文件不验证电子邮件地址

时间:2014-04-27 14:05:57

标签: javascript html forms

我正在尝试创建一个表单,人们可以在其中添加电子邮件地址以注册邮件列表。我正在努力验证他们是否真的使用JavaScript输入了电子邮件地址。

以下是HTML表单:

<script type="text/javascript" src="validate-email.js"></script>

<form id="updateform" action='send.php' onsubmit="return validateForm();" method='post'>
    <input type="email" name="emailaddress" placeholder="Your e-mail address"/>
    <input type="submit" name="submit" value="Submit">
</form>

这是JavaScript文件的内容:

function validateForm()
{
var x=document.forms["updateform"]["emailaddress"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
  {
  alert("Please enter a valid e-mail address to receive updates.");
  return false;
  }
}

我做错了什么?我是一个完全的初学者......

编辑:为什么这会被投票?我做错了什么?如果您阅读我的评论,这是一个合法的问题,我在Stack Overflow上搜索的解决方案无法满足我的需求。

2 个答案:

答案 0 :(得分:0)

使用正则表达式验证电子邮件。

使用此正则表达式验证

 var regex=  '/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/';

原始Post就在这里

修改<!/强>

function validateEmail(email) { 
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
} 

function validateForm()
{
var email=document.forms["updateform"]["emailaddress"].value;
if (!validateEmail(email))
  {
  alert("Please enter a valid e-mail address to receive updates.");
  return false;
  }
}

答案 1 :(得分:0)

1)使用jQuery或类似的框架和插件。 2)使用type =&#34; email&#34;输入标签的属性。

 <input type="email" name="email">

或验证自定义:

 // validate function
 var isEmail = function(email){ 
        return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/.test(email); 
 }


function validateForm(){
  var email;

  // ... 
  // get value from html stuff
  // ...

  if(!isEmail(email)) 
    return alert('Email format fail! Please correct.')

  // do something next...
  // alert("That's it! Dude.");

}