验证不正确时,Javascript检查输入表单中的电子邮件地址只是在Safari中循环
我有一个表单,用户需要在一个输入框中输入他们的电子邮件地址。我有一个javascript函数,它存储在一个外部文件中,该文件被加载到html文件的头部 当我输入无效的电子邮件地址时,Safari(6.0.5)出现问题。警报窗口会弹出,当我单击OK时,它会一次又一次地弹出。我从来没有机会输入正确的电子邮件地址 我的函数是这样的:验证不正确时,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
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 = "";
}