javascript - 为什么我的 javascript 代码在用户输入错误的电子邮件地址时验证电子邮件地址运行并陷入循环?

标签 javascript html event-handling email-validation

我有一个表格来为注册请求注册用户信息。 我通过 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(email!=''){
    if(!filter1.test(email)){
        alert('your email address is invalid');
    }else{
    //validated
    }
}

关于javascript - 为什么我的 javascript 代码在用户输入错误的电子邮件地址时验证电子邮件地址运行并陷入循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45965396/

相关文章:

javascript - spy 的回调不是用 sinon 和 qunit 调用

javascript - Istanbul.js - 从源代码中删除装饰

html - div 内的文本垂直和水平对齐

javascript - 无法将事件监听器附加到 Canvas ?

c# - 安全地引发事件线程 - 最佳实践

javascript - 请求 Axios 到 ASP.Net Core Controller 时所有变量均为空

Javascript:验证多个密码并确认密码字段

javascript - 之后添加带有css伪元素的onclick

c# - 添加(或删除)空事件监听器是空操作吗?

c++ - 信号处理程序与虚函数和继承(事件处理)