验证不完美

时间:2017-09-25 09:01:32

标签: javascript html

这是我的代码:

function email() {
  var reg = new RegExp("^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$");

  var nam = document.registration.email.value;
  var res = nam.match(reg);
  if (res) {
    alert("enter valid email");
    document.registration.email.focus();
  } else {
    document.registration.password.focus();
  }
} else {
  document.registration.email.focus();
}
}
<form name="registration" action="" method="post">
  <input type="text" name="username" placeholder="Username" required />
  <input type="text" name="email" placeholder="Email" onblur="email()" required />
  <input type="password" name="password" placeholder="Password" required />
  <input type="submit" name="submit" value="Register" />
</form>

验证无效,因此alert条件中的if未显示。任何人都可以帮助我实现这种类型的验证。

提前致谢

5 个答案:

答案 0 :(得分:0)

由于您使用的是html 5,因此您无需编写自己的电子邮件验证即可使用 HTML5内置了电子邮件验证检查。

<form name="registration" action="" method="post">
<input type="text" name="username" placeholder="Username" required />
<input type="email" name="email" placeholder="Email" onblur="email()" required />
<input type="password" name="password" placeholder="Password" required />
<input type="submit" name="submit" value="Register" />
</form>

但是如果您想要使用您的功能,请将其用作:

<html>
<head>
<script>
function emails()
    {
            var reg=new RegExp("^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$");
                var nam=document.registration.email.value;
                if(!new RegExp(reg).test(nam))
                {
                        alert(document.registration.email);
            document.registration.password.focus();
                } else {
                        document.registration.password.focus();
                }
    }

 </script>
</head>
<body>
<form name="registration" action="" method="post">
<input type="text" name="username" placeholder="Username" required />
<input type="text" name="email" placeholder="Email" onblur="javascript:emails()" required />
<input type="password" name="password" placeholder="Password" required />
<input type="submit" name="submit" value="Register" />
</form>
</body>

答案 1 :(得分:0)

嗯...假设您正在尝试对表单进行一些输入验证,我建议您阅读一些有关电子邮件验证正则表达式的信息。然后使用类似的东西: https://www.regextester.com/19

然后我认为你的if语句是有缺陷的。我认为你的意思是,如果电子邮件匹配正则表达式,如果应该关注密码字段。如果电子邮件不为空并且如果应该提供警报则无效。如果电子邮件是空的,它应该关注电子邮件。我做了一个快速清理,我认为代码应该类似于(未经测试的代码仅用于说明):

function validateInput() {
  var email= new RegExp("^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$");
  var inputValue=document.registration.email.value;
    if(inputValue.match(email)) {
      document.registration.password.focus();
    } else if (inputValue.length > 0) {
      alert("enter valid email");
      document.registration.email.focus();
    } else {
      document.registration.email.focus();
    }
}

答案 2 :(得分:0)

电子邮件是javascript中的保留关键字。首先将您的功能电子邮件重命名为测试或任何您想要的。第二件事你在代码中还有其他的东西。

答案 3 :(得分:0)

你的javascript中存在一些错误 - 语法和dom api。

如果你想进行手动验证,这里有一个小提琴的例子。

https://jsfiddle.net/xb4qrvmy/

function validate_email()
{
  var reg=new RegExp("^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$");

  var nam=document.forms["registration"].email.value;
  var res=nam.match(reg);
  if(!res && nam.length)
  {
    // I would advice against using alert.
    alert("enter valid email");
    document.registration.email.focus();
    // You want to somehow reset the displaying of the error.
    document.forms["registration"].email.value = ''
  } else if (res) {
    document.registration.password.focus();
  }
}

答案 4 :(得分:0)

function validate()
            {   
                        var x = document.forms["myform"]["email"].value;
                        var atpos = x.indexOf("@");
                        var dotpos = x.lastIndexOf(".");
                        if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) {
                      alert("Not a valid e-mail address");
                          return false;
                        }
            }
            </script>