- ベストアンサー
フォームの入力チェック
こんにちは、今回はホームページのワザについて教えて下さい~。 今フォームを作成してアンケートを回答してもらうページを作成中なのですが、そこで躓いてしまいました。 CGIでフォームを作成しているのですが、そのフォームの中の回答で必須項目を作りたいのです。回答していないで送信ボタンを押すとダイヤログが出て「××をご記入ください」のようなメッセージを出す・・・こんなのが理想なのです。 今普通にCGIでフォームだけは完了したのですが、そのチェック機能をjavaでつけても動いてくれないのです(泣)。全くjavaが働かず、普通に送信されてしまいます。 CGIを外してjavaだけでやろうとするとアドレスを予め設定していないという事でエラーになりますし・・・。今は <SCRIPT language="JavaScript"> <!-- function Check(){ if(document.myform.ks.value==""){ alert("必須項目を記入してください。"); return false; } ・ ・ ・ // --> </SCRIPT> </HEAD> <BODY><!--××× CGI Program--> <FORM action=http://www.CGIのテキストまでのパス.txt method=post onSubmit="return Check()"><INPUT type=hidden value=××@×× name=sendto><INPUT type=hidden value=/mail/××.htm name=success><!--ここまで--><A name=TOP></A> としてあります・・・。 すみません!どなたかわかる方!ぜひ教えて下さい、お願いいたします!
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
</SCRIPT><SCRIPT language="JavaScript"> <!-- function kakunin() { if (document.F1.項目名.value == "") { alert("必須項目を記入してください。"); document.F1.項目名.focus(); ←ココがありませんね。 return(false); } return(true); ←ココがありませんね。 } ←ココがありませんね。 // --> // </SCRIPT></head> <FORM NAME="F1" METHOD=POST ACTION="http://www. ←NAME="××"がありませんね。 ~.ne.jp/vpack/mail/mail.cgi" onSubmit="return kakunin()"> <input type="hidden" name="_to_" value="×××@×××.ne.jp"> <input type="hidden" name="_subject_" value="×××"> <input type="hidden" name="_location_" value="http://www.~.htm"> 私もharaponさんと同程度の知識で上記のように作り現在動いています。 少しでも参考になれば。
- 参考URL:
- http://tohoho.wakusei.ne.jp/
その他の回答 (5)
- wolfwood
- ベストアンサー率50% (199/398)
document.myform.ks.value==""について簡単に説明します。 document : 表示のためのオブジェクト myform : <FORM>のname属性(名前) ks : <INPUT>のname属性(名前) value : 値 myformという名前のFORMオブジェクト(<FORM>~</FORM>)の中にksという名前のテキストボックスがあり、そこに入力された値(value)が無い場合という意味です。 そこで、例を修正すると↓になります。 <FORM action="http://www.CGIのテキストまでのパス/****.cgi" method="post" name="myform" onSubmit="return Check()"> //チェックするテキストボックス <INPUT type="text" name="ks"> </FORM> 以上です。 あと、原因が特定しやすいので出力されたエラーをここに書いておくと良いですよ。
お礼
wolfwoodさん、こんにちは!!ご回答ありがとうございます! 素人の私にもわかりやすく教えて頂いて本当にありがとうございます。やはりコピー&ペーストだけじゃなく、少し考えて処理する事にします(笑)。おかげさまで少し進歩できました。エラーを書く、盲点でした。次回からそうさせて頂きます! ありがとうございました!
こんにちは。 これは、たぶん、JavaScirptの解釈間違いかと。 if((document.myform.ks.value==="") の意味が把握できていないのかな、と思います。 (あくまで、上にあるソースから判断しているのですが) 乱暴に書いてしまいますが、「フォーム名『myform』の『ks』という名のフィールドの値が空白であれば」という意味になるので、現在の<FORM>タグないに、それが見当たらないことが第一の原因では? また、</FORM>と閉じタグもないので、それも原因のような。 あと、CGIのファイル名、『.txt』と拡張子なってますが、『.cgi』ではないのでしょうか・・?? とりあえず、参考になるページ、乗せて置きますね。
お礼
ss_sionさん、ご回答ありがとうございました! if(document.myform.ks.value==="") の意味ですが、実は全く理解できていないのです。WEBで探してコピーなので・・・。お恥ずかしいです。 あと、一応/FORMは <TD align="center"><INPUT type="submit" value="送信"></TD></TR> </TBODY></TABLE></FORM> のように記入してありました。すっかり意気消沈し、JavaSだけにしようかな、と弱っておりますが、もう少し粘って頑張ってみます。ありがとうございました!
- kumagoro-
- ベストアンサー率57% (36/63)
まず、JAVAとJavaScriptは別物です。はっきりさせましょう。 回答ですが、質問文のソースにはmyformやksがないのではっきりしたことは分かりませんが、 myformという名前のフォームの中のksという名前のテキストボックスに何かが入力されているかどうかは、 書かれている通りのif(document.myform.ks.value == "")で判断出来ると思います。 他の方法としてはif(document.myform.ks.value.length == 0)といった条件分岐も考えられます。 ですが、その前にどの段階でJavaScriptが動かないかを調べる必要があります。 まずCheckという関数が呼ばれているかどうかです。 もしかしたら他のエラーでこけているのかも知れません。 ブラウザがIEならば、[ツール]→[インターネットオプション]→[詳細設定]→[スクリプトエラーごとに通知を表示する] にチェックが入っていますか? 入っていればエラーの個所と内容が、わかりにくく(笑) 表示されるはずです。 とりあえず、アドバイス出来るのはこれぐらいです。 参考にならなけばすいません。
お礼
kumagoro-さん、ご回答ありがとうございます。すみません、JavaScriptでした。この後、すっかりCGIをあきらめて、javascriptでメールを送信するようにしたところ、メールで送ってくれるようになりました。私にはCGIとjavaSの兼ね合いは高い壁でした・・・。エラーの個所を教えてもらっても本当にわかりずらく(泣)、それすらもわかりませんでした。でももう少し頑張ってみます。ありがとうございました!
- hide1978
- ベストアンサー率42% (32/75)
こんにちは、hide1978です。授業中に学校からアクセスしてます。(^^; 授業中、ちょいと暇だったんで調べてみたら・・・なんとharaponさんが知りたい内容が、そのまま解説されているサイトを発見しました。(^^; どぞ、参考URLを参照してください。ページの真中位に書いてありますです。(^^)/
お礼
hide1978さん、またまたご回答ありがとうございます! 素人の私にも理解できるかどうか、わかりませんが(笑)教えていただいたページを拝見してもう少し頑張ってみます!ありがとうございました!
- hide1978
- ベストアンサー率42% (32/75)
JavaScriptは未経験なので解りませんが、わざわざJavaで記述しなくても[KENT-WEB]さんで配布されている[POST MAIL]などを使えば簡単ですよ。 この[POST MAIL]には必須項目を設定する機能が搭載されていますし、設定もいたって簡単です。何か理由があって、どうしてもJavaで判定をしたいのであれば別ですが。(^^; とりあえず参考までに・・・。
お礼
こんにちは、hide1978さん。 早速のアドバイスありがとうございました。しかし私はperlがわからない上にワケあって(c)をWEB上に表示する事ができません。perlがわからないだけなら勉強しますが、配布元を記入しなくてはならないのはちょっと難しいのでした。 せっかく教えて頂いたのに申し訳ありません。ありがとうございました!
お礼
nishimoriさん、ご回答ありがとうございました!こんなにアラがあったのですね・・・。やはり何も分かっていない事を暴露してしまいました(苦笑)。nishimoriさんはお仕事で作成されていらっしゃるのですか?私も仕事としてできるように頑張ります!ありがとうございました!