• 締切済み

送信フォームからjspページに値を飛ばしたい

jspページでhtml,javaScriptを用いてフォームの入力制限を行い、FMenu.jspという、jspページにフォームの値を送信したいのですが、うまくいきません。どなたか教えてください。 Form.jspファイル(中略) <%@ page language="java" contentType="text/html; charset=windows-31j" pageEncoding="windows-31j"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head><title>フォーム入力画面</title></head> <body><center> <script type="text/javascript"> <!-- function checkForm(){ var a,b; NCheck(); if(a==true){ WCount(); } ACheck(); if(b==true){ WCount(); document.FM[0].submit(); document.FM[1].submit(); } } (中略) //--></script> <form action="Menu.jsp" method="POST" name="FM"> ID<input type="text" name="ID" size="20" maxlength="4"><br> パスワード<input type="text" name="PASS" size="20" maxlength="4"> <input type="button" value="OK" onClick="return checkForm();"> (中略)

みんなの回答

  • auty
  • ベストアンサー率58% (284/486)
回答No.2

まだ状況はよく掴めませんが、 >>> Menu.jspページに飛んでゆく 他にも飛ばしたい物はありますか。 document.fm[0].submit(); document.fm[1].submit(); これは、何でしょうか。 ・ 上と関連しますが、fm[0]とfm[1]は、何処にあるのでしょうか。 ここで、フォーム入力画面というところに、2つの<form>タグがあると仮定して、1つのコードを書いてみます。以下のコードを参考にしてみてください。 (文字コードは無視してください。) ------------------------------------------------------------ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>フォーム入力画面</title> </head> <body> <center> <table border="1" width="50%" height="50%"> <tr> <td align="center"> フォーム入力画面html <form action="Menu0.jsp" method="POST" name="KARA0"></form> <form action="Menu1.jsp" method="POST" name="KARA1"></form> </td> </tr> </table> <script type="text/javascript"> <!-- function check() { if ( !numberCheck() ) return false; if ( !wordCount() ) return false; if ( !AlphabetCheck() ) return false; document.forms[0].submit(); document.forms[1].submit(); return true; } function wordCount() { //4文字で入力 var word, word2; word = document.FM.ID.value; word2 = document.FM.PASS.value; var a, b; a = word.length; b = word2.length; if (a < 4 || b < 4) { alert("\uff14\u6587\u5b57\u3067\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044"); return false; } else { return true; } } function numberCheck() { //半角数字 var uidX; uidX = document.FM.ID.value; // wordCount(); if (uidX.match(/[^0-9]+/)) { alert("\u534a\u89d2\u6570\u5b57\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044"); return false; } else { return true; } } function AlphabetCheck() { //アルファベッド var passX; passX = document.FM.PASS.value; if (passX.match(/[^A-Za-z\s.-]+/)) { alert("\u534a\u89d2\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c9\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044"); return false; } return true; } //--></script> <form action="Menu.jsp" method="POST" name="FM"> ID <input type="text" name="ID" size="20" maxlength="4"> <br> PASSWORD <input type="text" name="PASS" size="20" maxlength="4"> <br> <br> <input type="button" value="ログイン" onClick="return check();"> <input type="reset" value="クリア"> </form> </center> </body> </html>

hachiko85
質問者

お礼

解決しました。アドバイスありがとうございました!!

  • auty
  • ベストアンサー率58% (284/486)
回答No.1

・ (中略)もあるので不明な点を幾つか挙げてみます。 ・  var a,b;の値は、何処で確実に設定されますか。 ・ FM[0]、FM1]の対応する<form>タグはありますか。   FM["fm0"]とかforms[0]とかでなければいけないかと思います。 ・ checkForm()は、明示的にtrueかfalseを返したほうがよいのでは。

hachiko85
質問者

補足

回答ありがとうございます。説明不足でした。IDとPASSWORDの入力制限を行ってから送信するようにしたいのです。ちょっと書き直したところ、Menu.jspページに飛んでゆくのですが、IDとPASSWORDの両方が入力されてから、飛ばしたいのですが、どちらか一方でも、間違った入力でも飛んでいてってしまいます。 <%@ page language="java" contentType="text/html; charset=windows-31j" pageEncoding="windows-31j"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head><title>フォーム入力画面</title></head> <body><center> <table border="1" width="50%" height="50%"> <tr><td align="center">フォーム入力画面</td></tr> </table> <script type="text/javascript"> <!-- function check(){ var a,b; numberCheck();    if(a==true){ wordCount();    } AlphabetCheck(); if(b==true){ wordCount();      document.fm[0].submit(); document.fm[1].submit(); } } function wordCount(){ //4文字で入力 var word,word2; word=document.FM.ID.value; word2=document.FM.PASS.value; var a,b; a=word.length; b=word2.length; if(a<4 || b<4){ alert("4文字で入力して下さい"); }else{ return true; } } function numberCheck(){ //半角数字 var uidX; uidX=document.FM.ID.value; wordCount(); if(uidX.match(/[^0-9]+/)){ alert("半角数字で入力してください"); return false; }else{ return true; } } function AlphabetCheck(){ //アルファベッド var passX; passX=document.FM.PASS.value; if(passX.match( /[^A-Za-z\s.-]+/ ) ) { alert("半角アルファベッドで入力してください"); return false; } return true; } //--></script> <form action="Menu.jsp" method="POST" name="FM"> ID<input type="text" name="ID" size="20" maxlength="4"><br> PASSWORD<input type="text" name="PASS" size="20" maxlength="4"> <br><br> <input type="button" value="ログイン" onClick="return check();"> <input type="reset" value="クリア" > </center> </form> </body> </html>

関連するQ&A