0

変数か何かを追加する必要がありますか? D: 助けて?

 <html>
<head>
<script language="javascript" type="text/javascript">
function sub()
{
validateForm();
}
function validateForm()
{
if (document.forms.myForm.fname.value == "" || document.forms.myForm.fname.value == " ")
  {
  alert("First name must be filled out");
  }
if (document.forms.myForm.lname.value == "" || document.forms.myForm.lname.value == " ")
{
alert("Last name must be filled out");
}
else
{
window.location = "ok.html";
}
}
</script>
</head>

<body>
<form name="myForm">
First name: <input type="text" name="fname">
<br>
Last name: <input type="text" name="lname">
<br>
<input type="button" value="Submit" onclick="sub()">
</form>
</body>
</html>

わかりましたので、私のコードはちょっと動作します - フォームが有効な場合に次のページにリダイレクトするように「else」ステートメントを変更する方法がわかりません..変数を追加する必要がありますか...? したがって、基本的にコードは、姓フィールドのみを入力するまで、私が望むことを実行します。その後、エラーメッセージが表示されますが、それでもリダイレクトされます-
両方のフィールドが有効な場合、コードが成功ページにリダイレクトされるようにするにはどうすればよいですか?

(私はjavascriptについてあまり知りません:/そして、あなたがそれをもっと簡単にすることができることを知っていますが、私たちはこの方法でそれをしなければならないので、コードにそれを強制するか何でもします)

4

1 に答える 1

1

これでうまくいくはずです:

<html>
    <head>
        <script language="javascript" type="text/javascript">
            function validateForm()
            {
                var worked = true;

                if (document.forms.myForm.fname.value == "" || document.forms.myForm.fname.value == " ")
                {
                    alert("First name must be filled out");
                    worked = false;
                }
                if (document.forms.myForm.lname.value == "" || document.forms.myForm.lname.value == " ")
                {
                    alert("Last name must be filled out");
                    worked = false;
                }

                if (worked)
                {
                    window.location = "ok.html";
                }
            }
        </script>
    </head>

    <body>
        <form name="myForm">
            First name: <input type="text" name="fname">
            <br />
            Last name: <input type="text" name="lname">
            <br />

            <input type="button" value="Submit" onclick="validateForm();">
        </form>
    </body>
</html>

この単純なタスクを実行する方法は多数ありますが、変数を使用して実行する方法は次のとおりです。基本的に、チェックのいずれかが失敗した場合、変数workedfalse(何かが機能しなかったことを示すために) に設定され、その変数がそのまま残っている場合 ( true) にのみ、ユーザーは次のステップに進むことができます。

PS: あなたのコードを確認してください (私のコードはあなたのコードよりも読みやすいですか?)。PPS: JS だけに頼ってフォームを検証するべきではありません。サーバーでも確認する必要があります。これらのチェックは便宜上のものであるため、誰でも簡単にバイパスできます。

于 2012-05-28T18:55:22.950 に答える