验证电子邮件时无法停止提交表单

时间:2016-03-17 08:40:58

标签: javascript forms validation

我正在创建一个简单的表单,它从文本输入中获取值,检查电子邮件地址中的所有字符是否都存在并返回true或false。根据很多不同的资源,如果返回false,则不应提交表单。但是,当我在JS bin中测试它时,它会提交它。这是代码:

function validateEmail(x) {
  console.log(x);
  var email = x.myText.value;
  console.log(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,}))$/;
  console.log(re.test(email));
}
<form name="myForm" onsubmit="return validateEmail(this)">
  <input name="myText" type="text">
  <input type="submit" value="Submit">
</form>

3 个答案:

答案 0 :(得分:3)

如果验证失败,则需要返回false,因此只需替换

即可
console.log(re.test(email));

return re.test(email);

Demo

答案 1 :(得分:0)

试试这个:

function validateEmail(x) {
  console.log(x);
  var email = x.myText.value;
  console.log(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);
}

答案 2 :(得分:0)

更改 <form name="myForm" onsubmit="return validateEmail(this)">

使用此 <form name="myForm" onClick="return validateEmail(this)">

功能就像这样

function validateEmail(x) {  console.log(x);   var email = x.myText.value;  console.log(email);   var re = your regular expression;   if((re.test(email)){ document.getElementById(myForm).submit(); }