2017-08-30 155 views
1

我有一个注册用户注册请求信息的表单。 我通过html,javascript和php制作。 当用户输入错误的电子邮件地址时,此代码运行并进入循环。为什么这个我的javascript代码验证电子邮件地址,当用户输入错误的电子邮件地址运行并陷入循环?

我的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()" /> &rArr; 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;} 
} 

我该怎么办才能解决这个问题?

+0

我会尝试删除行,如果(repeatmailalert> 1){repeatmailalert = 1;}看看会发生什么....没有足够的时间来实现自己。 .. – JosephDoggie

+1

**感谢您的回复,但我写了这条线返回值为一,并在一站之后再次运行** – harix

+1

当你说运行和在循环中下降你的意思是无限循环? –

回答

1

试试这个:

if(email!=''){ 
    if(!filter1.test(email)){ 
     alert('your email address is invalid'); 
    }else{ 
    //validated 
    } 
} 
+0

thanks.this works – harix