这是我的代码:
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
未显示。任何人都可以帮助我实现这种类型的验证。
提前致谢
答案 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>