• 締切済み

ラジオボタンのチェック

複数のラジオボタンを作り、送信ボタンをクリック。全てOKの場合だけ所定のページへジャンプし、 1つでもNOや入力モレがあると、 その部分をコメントとして表示し、再入力を促す ようにしたいと思います。 どのようにすれば良いのでしょうか? ご教授お願いします。

みんなの回答

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

すっきりとこんな感じでいかがでしょうか? <form action="yn.htm" onSubmit="return check(this)" method="get"> Q1.○○ <input type="radio" name="q1" value="y">YES <input type="radio" name="q1" value="n">NO<br> Q2.○○ <input type="radio" name="q2" value="y">YES <input type="radio" name="q2" value="n">NO<br> Q3.○○ <input type="radio" name="q3" value="y">YES <input type="radio" name="q3" value="n">NO<br> <input type=submit value="send"> </form> <script language=javascript> function check(f){ var radios=new Array(); for (var i=0;i<f.length;i++){ var el=f.elements[i] if(el.type=="radio"){ if(radios[el.name]==null) radios[el.name]=""; if(el.checked==true) radios[el.name]=el.value; } } for (var i in radios){ if (radios[i]!="y"){ alert(i+"の値がおかしい") return false; } } } </script>

回答No.2

<html><head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>チェックボックス</title> <script language="JavaScript" type="text/JavaScript"> function radioValue(element) { var len; len = element.length; for (i=0;i<len;i++) { if (element[i].checked) return element[i].value; } return ""; } function onNext() { if (radioValue(document.form1.no1) != 'yes') { alert("選択1をYesにしてください。"); return;} if (radioValue(document.form1.no2) != 'yes') { alert("選択2をYesにしてください。"); return;} if (radioValue(document.form1.no3) != 'yes') { alert("選択3をYesにしてください。"); return;} document.form1.action = 'next.html'; document.form1.submit(); } </script> </head> <body> <form name="form1" method="post" action=""> 選択1<input name="no1" type="radio" value="yes">Yes<input name="no1" type="radio" value="no">No<br> 選択2<input name="no2" type="radio" value="yes">Yes<input name="no2" type="radio" value="no">No<br> 選択3<input name="no3" type="radio" value="yes">Yes<input name="no3" type="radio" value="no">No<br> <input type="button" name="Submit" value="次のページへ" onClick="javascript:onNext()"> </form> </body></html>

  • vivlet
  • ベストアンサー率36% (24/66)
回答No.1

適当に作ってみました。 もっと良い書き方があると思いますが、一応動作しますので(^-^; script内にradioの件数持ってるのが自分でも気に入らないです・・・ -------------------- <html> <head> <script language="JavaScript"> <!-- function check() { // radio グループ件数 radiocnt = 3; // チェック用変数 chkcnt = 0; //フォームの要素分ループ for(i = 0;i < form1.elements.length;i++) { // エレメントがradioで、チェックされてて、値がYならcountアップ if(form1.elements[i].type == "radio" && form1.elements[i].checked && form1.elements[i].value == "Y") { chkcnt++; } } //countとグループ件数が合えばOK if(chkcnt == radiocnt){ window.alert("OK!"); window.location.href = "http://www.goo.ne.jp/"; }else{ window.alert("NG!"); } } // --> </script> </head> <body> <form name="form1"> <input type="radio" name="a1" value="Y">Y <input type="radio" name="a1" value="N" checked>N <br> <input type="radio" name="a2" value="Y">Y <input type="radio" name="a2" value="N" checked>N <br> <input type="radio" name="a3" value="Y">Y <input type="radio" name="a3" value="N" checked>N <br> <br> <input type="button" onClick="check(); return false;" value="check"> </form> </body> </html> -------- 参考URLに上記ソースのHTMLを置いてあります

参考URL:
http://yokohama.cool.ne.jp/asuka_i/test_goo3.html