2

的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;
    }
}

还有我的 HTML

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

当我在 Chrome 中单击带有无效条目的提交时,会显示警报消息并且表单未提交。但是,当我在 Firefox 中执行相同操作时,表单提交时没有警告消息。

我已经为此工作了5个小时,我真的不知道。感谢您的帮助,非常感谢。

4

4 回答 4

1

我想它可能会对你有所帮助。

<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;
    }
于 2012-05-13T06:37:35.617 回答
0
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>
于 2012-10-15T14:07:36.883 回答
0

首先,您使用“get”而不是“post”提交表单是否有某些原因?当我尝试使用“get”提交您的表单时,Chrome 向我抱怨。

我在http://jsfiddle.net/jsWyw/设置了一个简单的小提琴来测试您的表单。如果我使用 JQuery 来处理表单提交而不是您的“onSubmit”,那么一切正常。因此,我查看了 onSubmit 发生了什么,并遇到了这个线程:http ://productforums.google.com/forum/#!topic/chrome/Z3MD5Od3oQM 。

要尝试的事情:

  • 确保使用 post 而不是 get
  • 使用“onSubmit”而不是“onsubmit”
  • 确保使用包含您的脚本<script type="text/javascript" src="javascript.js"></script>

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

于 2012-05-13T06:43:17.560 回答
0

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

于 2012-05-14T04:07:58.733 回答