当验证不正确时,输入表单中的Javascript检查电子邮件地址只会在Safari中循环

Javascript check e-mail address in input form just loops in Safari when validation is not correct

本文关键字:电子邮件地址 检查 循环 Safari Javascript 不正确 验证 表单 输入      更新时间:2023-09-26

我有一个表单,用户需要在一个输入框中输入他们的电子邮件地址。我有一个javascript函数,它存储在一个外部文件中,该文件正在html文件的头部加载。

当我输入无效的电子邮件地址时,Safari(6.0.5)出现问题。"警报"窗口弹出,当我单击"确定"时,它会一次又一次地弹出。我从来没有机会输入正确的电子邮件地址。

这就是我的功能:

   function validateEmail()
{
var x=document.forms["theForm"]["email"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
  {
  alert("Not a valid e-mail address");
  document.theForm.email.focus();
  return false;
  }
}

我调用这个函数如下所示:

<input type="text" name="email" onblur="validateEmail();" /></td >

如果使用.removeFocus(),就不再有问题了。

function validateEmail()
{
var x=document.forms["theForm"]["email"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
  {
  document.getElementById('alert_mail').innerHTML  = "Please change here";
  return false;
  }
    document.getElementById('alert_mail').innerHTML  = "";
}

编辑:这个函数中的return false;没有任何作用,我假设你发布的代码不是整个代码,无论如何,return false;在你提交表格时很有用,如果验证没有通过,你不想停止提交。

你认为onblur的safari中可能有一个错误,你尝试过onchange吗?