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

まず、フォームの送信に「post」ではなく「get」を使用している理由はありますか?'get'を使用してフォームを送信しようとすると、Chromeから文句が表示されます。

http://jsfiddle.net/jsWyw/でフォームをテストするための簡単なフィドルを設定します。'onSubmit'の代わりにJQueryを使用してフォームの送信を処理すると、すべてが正常に機能します。そこで、onSubmitで何が起こっているのかを調べて、このスレッドに出くわしました:http://productforums.google.com/forum/#!topic/chrome/ Z3MD5Od3oQM

試すべきこと:

  • getの代わりにpostを使用してください
  • 'onsubmit'の代わりに'onSubmit'を使用してください
  • スクリプトが含まれていることを確認してください<script type="text/javascript" src="javascript.js"></script>

それが失敗した場合は、Chromeで少し不安定に見えるものをsubmit使用するのではなく、Javascriptで自分でイベントを処理することをお勧めします。onSubmit

于 2012-05-13T06:43:17.560 に答える
0

エラーコンソールを見ましたか?validateFormハンドラーは、それwindow.newsletterがフォーム要素であると想定しています(最初にdocument.forms ["newsletter"]を使用する代わりにif())。これは、Firefoxの標準モードではありません。そのため、その行がスローされ、onsubmitハンドラーがスローされた場合、フォームは先に進んで送信します。しかしもちろん、エラーコンソールはハンドラーがスローしたことを報告しています.....

于 2012-05-14T04:07:58.733 に答える
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 に答える