【发布时间】: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()" /> ⇒ 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