- ベストアンサー
ラジオボタンでのメールアドレスの必須チェックをするには…?
- JavaScriptの知識が必要なラジオボタンでのメールアドレスの必須チェック方法を教えてください。
- フォームのラジオボタンの状態に応じて、メールアドレスの入力チェックを行うJavaScriptの作成方法を教えてください。
- 「不要」と「希望」のラジオボタンに対応する処理をJavaScriptで実装し、必要に応じてアラートを表示する方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
なんかよくわかんないですが、おそらく組み込みの際に 見落としがあると思うんですけどね・・・ たとえば、フォームが複数あるとか・・・。 submitボタンに何かするよりはbuttonに対して何かやる方が いいかもしれません。 <script language=javascript> function check(f){ var v=""; for (var i=0;i<f.length;i++){ if(f[i].name=="f000087034" && f[i].checked==true) v=f[i].value; } if(v==""){ alert("チェックしてください"); return false; }else if(v=="希望" && f.mailaddress.value==""){ alert("メールアドレスを入力して下さい"); return false; } f.submit(); } </script> <form method="get" action="hoge.cgi"> <input type="radio" name="f000087034" value="不要">不要 <input type="radio" name="f000087034" value="希望">希望<br> メールアドレス:<input type="text" name="mailaddress"><br> <input type="button" value="実行" onClick="check(this.form)"> </form>
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
すべてのkibouをf000087034に変えるだけですが 前回のは変数名とオブジェクトの名前を一緒につかっていたので 若干わかりにくかったかもしれません。 明示的にわけてみましたので、ご確認ください。 とりあえずチェックしているのはnameだけなのでそれに気づけばすぐです。 おいおい内容は理解していただければ幸いです <script language=javascript> function check(f){ var v=""; for (var i=0;i<f.length;i++){ if(f[i].name=="f000087034" && f[i].checked==true) v=f[i].value; } if(v==""){ alert("チェックしてください"); return false; }else if(v=="希望" && f.mailaddress.value==""){ alert("メールアドレスを入力して下さい"); return false; } return true; } </script> <form method="get" action="hoge.cgi" onSubmit="return check(this)"> <input type="radio" name="f000087034" value="不要">不要 <input type="radio" name="f000087034" value="希望">希望<br> メールアドレス:<input type="text" name="mailaddress"><br> <input type="submit" value="実行"> </form>
お礼
うぅ、頂いたスクリプトをシンプルなHTMLに組み込んでみた所、 できたのですが。。できたのですが…。。 (Θ_Θ;) でも実際に組み込みたいタグの中に入れた所、できなかったのです。。 せっかくご教授頂いたのに、ホント申し訳ありません。。 アンケートフォーム入力 → CGI(入力チェック) → 入力確認画面 で、CGIサーバー側で指定されたタグを入れると、どうもそちらが優先されて、JavaScriptよりもCGI画面の方が先に出てきてしまうんです。 どうも、<input type="submit" value="送信">の中にonclickを組み込んでいかないとだめみたいなんです。。(;>_<;)
- yambejp
- ベストアンサー率51% (3827/7415)
たとえばこんな感じ <script language=javascript> function check(f){ var kibou=""; for (var i=0;i<f.length;i++){ if(f[i].name=="kibou" && f[i].checked==true) kibou=f[i].value; } if(kibou==""){ alert("チェックしてください"); return false; }else if(kibou=="希望" && f.mailaddress.value==""){ alert("メールアドレスを入力して下さい"); return false; } return true; } </script> <form method="get" action="hoge.cgi" onSubmit="return check(this)"> <input type="radio" name="kibou" value="不要">不要 <input type="radio" name="kibou" value="希望">希望<br> メールアドレス:<input type="text" name="mailaddress"><br> <input type="submit" value="実行"> </form>
お礼
早速にありがとうございます! ひとつ質問させて下さいませ。。 既にラジオボタンのnameの値が、「f000087034」という物を付けたい場合は、どうすれば良いでしょうか。(_ _*) 「kibou」を「f000087034」で置き換えてみたのですが、エラーが出てしまいました。 応用が利かなくて申し訳ありません(>_<) どうぞよろしくお願いいたします。
お礼
yambejpさま、何度も本当にすみません。 ありがとうございます! ただ…今回頂いたスクリプトも、何故かスルーされてしまい、 チェックが働かないまま、アラートの表示がないまま、次のCGIページに移行してしまいました。 せっかく考えて頂いたのに…申し訳ありません。 今回は、このようなスクリプトで、とりあえずアラートは出すことができました。(アラート表示後、次のCGIページに移ってはしまうのですが、ユーザーにアラートで注意を促すようにはできたので…。 <SCRIPT language="JavaScript"> function check() { rcheck = document.formChecker.f000087034[0].checked; //ラジオボタンf000087034の2つ目(f000087034[0])の状態を取得 //rcheckの内容がtrue(ボタンが押されている状態)かどうかで条件分岐 if (rcheck) { //tureの場合 document.location = "hoge"; //リンク先を呼び出す } else { //falseの場合 alert("メールアドレスを入力して下さい"); //アラートを表示する } } </SCRIPT> </HEAD> <BODY> <FORM method="post" action="hoge" NAME="formChecker"> <INPUT type="radio" name="f000087034" value="1">不要 <INPUT type="radio" name="f000087034" value="2" checked> 希望 <INPUT TYPE="button" VALUE="送信" onClick="check()"> <!-- 管理ID --(このタグが元凶です。。)> <input type="hidden" name="SMPFORM" value="hogehogehoge"> </FORM> 何度もご返信頂いてしまって、本当にすみませんでした。 でも、ホント感謝しております~!(TдT) ありがとうございました!!