为什么我的 javascript 代码会在用户输入错误的电子邮件地址 运行 并陷入循环时验证电子邮件地址?
why this my javascript code that validate email address when user write wrong email address run and fall in loop?
我有一个表格可以为注册请求注册用户信息。
我通过 html 和 javascript 和 php 做到了。
当用户输入错误的电子邮件地址时,此代码 运行 并陷入循环。
我的javascript函数是这样的:
function checkmail()
{
var email = document.forms["frmreg"]["email"].value;
var filter1 = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!filter1.test(email) && email!='')
{
alert('your email address is invalid');
return false;
}
}
和电子邮件地址的输入字段:
<tr>
<td>Your Email:</td>
<td width="180" colspan="2"><input name="email" style="color: #000; font-family: Tahoma"dpieagent_iecontroltype="2" onkeypress="" onblur="checkmail()" /> ⇒ To recover password and notification </td>
</tr>
为什么我的 javascript 代码会在用户输入错误的电子邮件地址 运行 并陷入循环时验证电子邮件地址?
为了避免陷入循环我定义了一个变量来防止函数重复
所以我的代码稍微改变了一下:
首先我在函数外定义了一个变量:
var repeatmailalert=1;
function checkmail()
{
var email = document.forms["frmreg"]["email"].value;
var filter1 = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!filter1.test(email) && repeatmailalert==1 && email!='')
{
repeatmailalert++;
alert('your email address is invalid');
return false;
}
if(repeatmailalert>1){repeatmailalert=1;}
}
我该怎么做才能解决这个问题?
试试这个:
if(email!=''){
if(!filter1.test(email)){
alert('your email address is invalid');
}else{
//validated
}
}
我有一个表格可以为注册请求注册用户信息。 我通过 html 和 javascript 和 php 做到了。 当用户输入错误的电子邮件地址时,此代码 运行 并陷入循环。
我的javascript函数是这样的:
function checkmail()
{
var email = document.forms["frmreg"]["email"].value;
var filter1 = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!filter1.test(email) && email!='')
{
alert('your email address is invalid');
return false;
}
}
和电子邮件地址的输入字段:
<tr>
<td>Your Email:</td>
<td width="180" colspan="2"><input name="email" style="color: #000; font-family: Tahoma"dpieagent_iecontroltype="2" onkeypress="" onblur="checkmail()" /> ⇒ To recover password and notification </td>
</tr>
为什么我的 javascript 代码会在用户输入错误的电子邮件地址 运行 并陷入循环时验证电子邮件地址?
为了避免陷入循环我定义了一个变量来防止函数重复
所以我的代码稍微改变了一下:
首先我在函数外定义了一个变量:
var repeatmailalert=1;
function checkmail()
{
var email = document.forms["frmreg"]["email"].value;
var filter1 = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!filter1.test(email) && repeatmailalert==1 && email!='')
{
repeatmailalert++;
alert('your email address is invalid');
return false;
}
if(repeatmailalert>1){repeatmailalert=1;}
}
我该怎么做才能解决这个问题?
试试这个:
if(email!=''){
if(!filter1.test(email)){
alert('your email address is invalid');
}else{
//validated
}
}