• 締切済み

1ページで2つのフォームをチェックしたいのですが…

1つのページに同じ項目のフォームを2つ作りました。 そしてそれにチェックを設けたいと思いフォームチェックのスクリプトを入れてみました。 が、しかし、、 上のフォームはチェックが動くのですが、 下のフォームは何を入れてもチェックがエラー検出をして 次のページに進めなくなってしまいます。。 こちらはどのようにしたら両方のチェックが働きつつ 次のページに値を渡せるのでしょうか? 正しい書き方を教えてください。 よろしくお願いします。 <html> <head> <script language="JavaScript"> <!-- // 入力チェック function chkInputForm() { Error = new Array(); i = 0; // お客様の業種入力チェック if (document.forms[0].elements["part"].selectedIndex == 0) { Error[i] = "[ 1・2の選択 ] は必須項目です。"; i++; } // 会社(事務所)のご住所入力チェック if (document.forms[0].elements["pref"].selectedIndex == 0) { Error[i] = "[住まい] は必須項目です。"; i++; } // 未入力があればアラート if (Error.length > 0) { ErrorText = Error.join("\n"); alert ("以下の項目は必須です。\n\n"+ErrorText); return false; } return true; } //--> </script> </head> <body> <form action="inquiry.php" method="post" onsubmit="return chkInputForm()"> <table class="table" summary="お問合せテーブル"> <tbody><tr> <th>1か2</th> <td> <select name="part" style="width: 200px;"> <option value="0">---ご選択下さい---</option> <option value="1">1</option> <option value="2">2</option> </select> </td> </tr> <tr> <th>住まいは</th> <td> <select name="pref" style="width: 200px;"> <option value="0">---ご選択下さい---</option> <option value="1">日本</option> <option value="2">海外</option> </select> </td> </tr> </tbody></table> <input class="iepng" name="button" value="送信" type="submit"> </form> <form action="inquiry.php" method="post" onsubmit="return chkInputForm()"> <table class="table" summary="お問合せテーブル"> <tbody><tr> <th>1か2</th> <td> <select name="part" style="width: 200px;"> <option value="0">---ご選択下さい---</option> <option value="1">1</option> <option value="2">2</option> </select> </td> </tr> <tr> <th>住まいは</th> <td> <select name="pref" style="width: 200px;"> <option value="0">---ご選択下さい---</option> <option value="1">日本</option> <option value="2">海外</option> </select> </td> </tr> </tbody></table> <input class="iepng" name="button" value="送信" type="submit"> </form> </body> </html>

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

同じ構成のフォームをチェックする汎用的な処理は return chkInputForm(this) としてフォーム自体をわたし function chkInputForm(f){ f.elements・・・・ というような処理にすると効果的です

  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.3

Errorはネイティブのコンストラクタと被るから使ったらダメ

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

まったく同じフォームをふたつ設置するのでしたら、判定javascriptをふたつ function chkInputForm1() {} function chkInputForm2() {} とでもして・・ <form action="inquiry.php" method="post" onsubmit="return chkInputForm1()"> <form action="inquiry.php" method="post" onsubmit="return chkInputForm2()"> と別のスクリプトを呼び出せば?

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

if (document.forms[0].elements["part"].selectedIndex == 0) とあって 同じnameがふたつありますけど・・。 あるいは、submit動作で、おなじfunctionを呼び出してますけど・・ いずれかを直せばよいでしょう。 actionが同じなので、ひとつのformで括って、nameを帰るのが筋だと思いますが

arc04030
質問者

補足

想像以上に早いアドバイスありがとうございます! ページの一番上と一番下に同じフォームを置きたかったのですが、 フォームを作るのが初めてで無知ですいません・・ 教えて頂いた内容から想像するに、 違うフォームを作らないといけないという事でしょうか・・? ただ、次のページに送りたい値はpartとprefなんですが nameが同じままでは送れないのでしょうか?

関連するQ&A