我的javascript表单验证在Chrome中工作得很好,但在Firefox中却不行

我的javascript表单验证在Chrome中工作得很好,但在Firefox中却不行,javascript,firefox,google-chrome,Javascript,Firefox,Google Chrome,javascript: function validateForm() { var x=document.forms["newsletter"]["agree"].value; if (newsletter.agree.checked != 1) { alert("Checkbox must be checked"); return false; } var y=document.forms["newslette

javascript:

    function validateForm()
{
    var x=document.forms["newsletter"]["agree"].value;
    if (newsletter.agree.checked != 1)
    {
        alert("Checkbox must be checked");
        return false;
    }


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

    else 
    {   
        return true;
    }
}
函数validateForm()
{
var x=文件.表格[“通讯”][“同意”].价值;
如果(newsletter.agree.checked!=1)
{
警告(“必须选中复选框”);
返回false;
}
var y=文件。表格[“新闻通讯”][“电子邮件”]。值;
var atpos=y.indexOf(“@”);
var dotpos=y.lastIndexOf(“.”);

如果(atpos我想它可能会帮助你

<div id="signup">
        <form id="newsletter" action="" method="get" onsubmit="return validateForm()">
        <fieldset>
        <p>Email: <input type="text" name="email" id="email" size="35"/>
        Please send me the monthly newsletter 
        <input type="checkbox" checked="checked" name="agree" id="agree" value=""/>
        <br/>
        <input type="submit" value="Signup"/></p>
        </fieldset>
        </form>
        </div><!-- signup -->



   function validateForm()
    {
        var agreeEl = document.getElementById("agree");
        if (agreeEl.checked != 1)
        {
            alert("Checkbox must be checked");
            return false;
        }


        var emailEl = document.getElementById("email");
        var atpos = emailEl.value.indexOf("@");
        var dotpos = emailEl.value.lastIndexOf(".");
        if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= y.length) {
          alert("Not a valid e-mail address");
        return false;   
        }

        return true;
    }

电邮:
请把月刊寄给我

函数validateForm() { var agreel=document.getElementById(“agree”); 如果(已选中协议!=1) { 警告(“必须选中复选框”); 返回false; } var emailEl=document.getElementById(“电子邮件”); var atpos=emailEl.value.indexOf(“@”); var dotpos=emailEl.value.lastIndexOf(“.”); if(atpos<1 | | dotpos=y.length){ 警报(“不是有效的电子邮件地址”); 返回false; } 返回true; }
首先,您使用“get”而不是“post”提交表单有什么原因吗?当我试图使用“get”提交表单时,Chrome向我抱怨

我在上设置了一个简单的fiddle来测试您的表单。如果我使用JQuery来处理表单提交,而不是您的“onSubmit”,那么一切都可以正常工作。因此,我查看了onSubmit的情况,发现了以下线程:

尝试的事项:

  • 确保使用post而不是get
  • 使用“onSubmit”而不是“onSubmit”
  • 使用

如果失败,我建议您自己用Javascript处理
submit
事件,而不是使用
onSubmit
,这在Chrome中似乎有点古怪。

您是否查看了错误控制台?您的validateForm处理程序假设
window.newsletter
是一个表单元素(而不是使用document.forms)[“newsletter”]在第一个
if()
)中,它不在Firefox的标准模式中。因此,该行抛出,如果onsubmit处理程序抛出,则表单将继续并提交。但当然,错误控制台报告处理程序抛出了….

函数validateForm()
function validateForm()
{
var x=document.forms["myForm"]["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");
  return false;
  }
}


<form name="myForm" action="demo_form.asp" onsubmit="return validateForm();" method="post">
    Email: <input type="text" name="email">
    <input type="submit" value="Submit">
</form>
{ var x=document.forms[“myForm”][“email”].value; var atpos=x.indexOf(“@”); var dotpos=x.lastIndexOf(“.”);
如果(Atpos如果你在头上敲了5个小时后还没弄明白,休息一下。你的两段代码在这里运行得很好,你能提供完整的源代码吗?不,这个脚本在Firefox中仍然不起作用。感谢你的帮助,你使用哪一版本的Firefox?我已经在Firefox 10.0.1上测试过了。UPD:我将Firefox更新为12。0,它也可以正常工作。请提供更多信息。Firefox 12。我的朋友,也在使用12.0,也有同样的问题。编辑:当我在Firefox中单击“注册”并打开错误控制台时,会显示一个错误,因为未定义新闻稿。你真的测试了我的代码吗?因为我没有使用表单的全局变量(“新闻稿”)和你一样。我为每个字段添加了标识符,并通过id获取它们的值。请复制粘贴我的代码(html和javascript)到你的项目和测试。它应该能正常工作。哇,对不起,你是对的。我缺少电子邮件的id属性,所以当它寻找id时,什么都没有。非常感谢这个答案!谢谢。我可能只是尝试用JavaScript处理它,而不是使用html onsubmit或onclick属性。对不起,我不太了解另外,请您进一步解释一下好吗?用
document.forms[“newsletter”][“agree”]替换
newsletter.agree.checked
function validateForm()
{
var x=document.forms["myForm"]["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");
  return false;
  }
}


<form name="myForm" action="demo_form.asp" onsubmit="return validateForm();" method="post">
    Email: <input type="text" name="email">
    <input type="submit" value="Submit">
</form>