【问题标题】:why this my javascript code that validate email address when user write wrong email address run and fall in loop?为什么当用户写入错误的电子邮件地址时,我的验证电子邮件地址的 javascript 代码会运行并陷入循环?
【发布时间】:2018-02-08 11:05:27
【问题描述】:

我有一个表格来注册用户信息以进行注册请求。 我通过 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()" /> &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;}
}   

我可以做些什么来解决这个问题?

【问题讨论】:

  • 我会尝试删除该行 if(repeatmailalert>1){repeatmailalert=1;} 看看会发生什么......没有时间自己实现......
  • 感谢您的回复,但我写这行是为了将值返回为 1 并在一次停止后再次运行
  • 当你说run and fall in the loop你的意思是无限循环吗?
  • 尽量不要使用警报,而是使用其他东西。我认为当您单击警报时,焦点又回到了 HTML 元素上,这可能是无限循环的原因
  • 是无限循环,但对于其他领域,我必须使用警报。 谁能帮我解决这个问题?

标签: javascript html event-handling email-validation


【解决方案1】:

试试这个:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-13
    • 2010-11-24
    • 2014-06-12
    • 1970-01-01
    • 2012-04-08
    • 2013-12-20
    • 2010-09-16
    • 2011-03-11
    相关资源
    最近更新 更多