- ベストアンサー
回答群のチェック数制限方法
- 回答群の中から、規定数のチェックをもらう方法を探しています。
- YESとNOのチェックを3つずつ取得する方法を考えています。
- YESならYES、NOならNOでチェック数を制限し、4つ以上の場合は処理方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ログを残して3つ以上選択の場合古い順に回答をキャンセルする。 クリアボタンでログも初期化するので安心。 <html> <head> <script type="text/javascript"> <!-- var log=""; var k=3;//規定数 function ch(n){ log+=""+n; if(check(1)>k){ var num=Number(log.charAt(0))*3-3; window.alert("チェック項目が多すぎます。回答を古い順にキャンセルします。"); document.fo.elements[num].checked=false; document.fo.elements[num+1].checked=false; document.fo.elements[num+2].checked=true; log=log.split((num+3)/3).join(""); } } function check(cnt){ var c=0;//カウンタ for(i=0;i<document.fo.elements.length;i++){ if(document.fo.elements[i].checked&&(i+1)%3!=0){ c++; } } if(cnt){ return c; } else{ if(c<k){ window.alert("チェック項目が足りません。(あと"+(k-c)+"個)"); } else if(c>k){ window.alert("チェック項目が多すぎます。("+(c-k)+"個オーバー)"); } else{ //チェック数が規定数どおりの場合の処理。document.submit();など } } } //--> </script> </head> <body> <form name="fo"> Q1:<INPUT type="radio" name="q1" onclick="ch(1)">yes <INPUT type="radio" name="q1" onclick="ch(1)">no <INPUT type="radio" name="q1" checked>回答しない<br> Q2:<INPUT type="radio" name="q2" onclick="ch(2)">yes <INPUT type="radio" name="q2" onclick="ch(2)">no <INPUT type="radio" name="q2" checked>回答しない<br> Q3:<INPUT type="radio" name="q3" onclick="ch(3)">yes <INPUT type="radio" name="q3" onclick="ch(3)">no <INPUT type="radio" name="q3" checked>回答しない<br> Q4:<INPUT type="radio" name="q4" onclick="ch(4)">yes <INPUT type="radio" name="q4" onclick="ch(4)">no <INPUT type="radio" name="q4" checked>回答しない<br> Q5:<INPUT type="radio" name="q5" onclick="ch(5)">yes <INPUT type="radio" name="q5" onclick="ch(5)">no <INPUT type="radio" name="q5" checked>回答しない<br> Q6:<INPUT type="radio" name="q6" onclick="ch(6)">yes <INPUT type="radio" name="q6" onclick="ch(6)">no <INPUT type="radio" name="q6" checked>回答しない<br> Q7:<INPUT type="radio" name="q7" onclick="ch(7)">yes <INPUT type="radio" name="q7" onclick="ch(7)">no <INPUT type="radio" name="q7" checked>回答しない<br> Q8:<INPUT type="radio" name="q8" onclick="ch(8)">yes <INPUT type="radio" name="q8" onclick="ch(8)">no <INPUT type="radio" name="q8" checked>回答しない<br> Q9:<INPUT type="radio" name="q9" onclick="ch(9)">yes <INPUT type="radio" name="q9" onclick="ch(9)">no <INPUT type="radio" name="q9" checked>回答しない<br> Q10<INPUT type="radio" name="q10" onclick="ch(10)">yes <INPUT type="radio" name="q10" onclick="ch(10)">no <INPUT type="radio" name="q10" checked>回答しない<br> <INPUT type="button" value="決定" onclick="check()"><INPUT type="reset" value="クリア" onclick="log='';"><br> </form> </body> </html>
その他の回答 (1)
- m035
- ベストアンサー率44% (38/86)
↓これでどうでしょう? <html> <head> <script type="text/javascript"> <!-- function check(){ var c=0;//カウンタ var k=3;//規定数 for(i=0;i<document.fo.elements.length;i++){ if(document.fo.elements[i].checked&&(i+1)%3!=0){ c++; } } if(c<k){ window.alert("チェック項目が足りません。(あと"+(k-c)+"個)"); } else if(c>k){ window.alert("チェック項目が多すぎます。("+(c-k)+"個オーバー)"); } else{ //チェック数が規定数どおりの場合の処理。document.fo.submit();など } } //--> </script> </head> <body> <form name="fo"> Q1:<INPUT type="radio" name="q1">yes <INPUT type="radio" name="q1">no <INPUT type="radio" name="q1" checked>回答しない<br> Q2:<INPUT type="radio" name="q2">yes <INPUT type="radio" name="q2">no <INPUT type="radio" name="q2" checked>回答しない<br> Q3:<INPUT type="radio" name="q3">yes <INPUT type="radio" name="q3">no <INPUT type="radio" name="q3" checked>回答しない<br> Q4:<INPUT type="radio" name="q4">yes <INPUT type="radio" name="q4">no <INPUT type="radio" name="q4" checked>回答しない<br> Q5:<INPUT type="radio" name="q5">yes <INPUT type="radio" name="q5">no <INPUT type="radio" name="q5" checked>回答しない<br> Q6:<INPUT type="radio" name="q6">yes <INPUT type="radio" name="q6">no <INPUT type="radio" name="q6" checked>回答しない<br> Q7:<INPUT type="radio" name="q7">yes <INPUT type="radio" name="q7">no <INPUT type="radio" name="q7" checked>回答しない<br> Q8:<INPUT type="radio" name="q8">yes <INPUT type="radio" name="q8">no <INPUT type="radio" name="q8" checked>回答しない<br> Q9:<INPUT type="radio" name="q9">yes <INPUT type="radio" name="q9">no <INPUT type="radio" name="q9" checked>回答しない<br> Q10<INPUT type="radio" name="q10">yes <INPUT type="radio" name="q10">no <INPUT type="radio" name="q10" checked>回答しない<br> <INPUT type="button" value="決定" onclick="check()"><INPUT type="reset" value="クリア"><br> </form> </body> </html>
お礼
正直、こんなに早く回答が来るとは思ってなかったです。 回答ありがとうございます。 やっぱりラジオボタンで行くとなると、「回答しない」の第3の選択肢が必要になってきますかー。 4つ目をクリックしたら、1つ目にクリックしたところのチェックが外される!なんて事は、難しいんでしょうかね?
お礼
回答ありがとうございます。大変参考になりました。