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

验证不正确时,Javascript检查输入表单中的电子邮件地址只是在Safari中循环,javascript,html,forms,safari,Javascript,Html,Forms,Safari,我有一个表单,用户需要在一个输入框中输入他们的电子邮件地址。我有一个javascript函数,它存储在一个外部文件中,该文件被加载到html文件的头部 当我输入无效的电子邮件地址时,Safari(6.0.5)出现问题。警报窗口会弹出,当我单击OK时,它会一次又一次地弹出。我从来没有机会输入正确的电子邮件地址 我的函数是这样的: function validateEmail() { var x=document.forms["theForm"]["email"].value; var atp

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

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

我的函数是这样的:

   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;
  }
}
函数validateEmail()
{
var x=document.forms[“theForm”][“email”].value;
var atpos=x.indexOf(“@”);
var dotpos=x.lastIndexOf(“.”);

如果(atpos认为onblur的safari中可能存在错误,您是否尝试过onchange?

使用
.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  = "";
}
函数validateEmail()
{
var x=document.forms[“theForm”][“email”].value;
var atpos=x.indexOf(“@”);
var dotpos=x.lastIndexOf(“.”);

if(atposI)我刚读到这个问题与重新聚焦到一个无效字段有关,所以。然而,这篇文章是重复的,他是否也应该“返回true”在函数结束时?@AlejandroIván,在输入字段中,
返回false;
无效,如果在该函数中提交表单,则需要该表单。但事实上,不需要它。你是对的。它在onblur事件中被调用。我以为它在onsubmit事件中被调用了一会儿。然后谢谢你关于添加隐藏DIV的建议!我一定会用它来让用户更清楚地看到需要更正的内容。天哪!很高兴我能帮上忙
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  = "";
}