0

我有一个表格,用户需要在一个输入框中输入他们的电子邮件地址。我有一个 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 >
4

2 回答 2

1

使用.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;在您提交表单时很有用,如果验证未通过,您不会停止提交。

于 2013-06-26T22:03:15.247 回答
0

认为在使用 onblur 的 Safari 中可能存在错误,您尝试过 onchange 吗?

于 2013-06-26T22:01:38.270 回答