JavaScriptで、アンケートのラジオボタンの空欄チェックを行う方法を教えてください。ラジオボタンの質問が3問あります。問1(選択肢は4つ)で1番目~3番目を選択した人は、問2(選択肢は4つ)と問3(選択肢は5つ)の回答が必須になります。問1で1番目~3番目を選択して、かつ問2および問3で何も選択してない場合のみ、ポップアップでエラーメッセージを出したいのです。(※問1の空欄チェックは今回は不要です。)以下のスクリプトを加工して使いたいのですが、どのようにすればいいかを教えていただけないでしょうか。
<SCRIPT Language="JavaScript">
<!--
function Check()
{
if (document.test.Q01[3].checked == true) { alert("問1で「持っていない」と回答した人は、問2にもお答えください"); return false; }
}
// -->
</SCRIPT>
べつに再質問しなくても聞いちゃえば良かったのに^^;
ちょこっと変えるだけですよ。
<SCRIPT Language="JavaScript"> <!-- function Check() { var obj = document.test.Q02; for (i = 0 ; obj.length > i ; i++ ){ if (obj[i].checked){ date = obj[i].value ; break; } } if (document.test.Q01[3].checked == false && !date) { alert("問1で「持っていない」と回答した人は、問2にもお答えください"); return false; } } // --> </SCRIPT>
document.test.Q01[3].checked をfalseにしただけです。
もしくはdocument.test.Q01[3].checked != trueでもいけますよ
長くなっちゃった・・・
<SCRIPT Language="JavaScript"> <!-- function Check() { // 問1のチェック var flgQ1; for (var idx = 0; idx < 3; idx++) { flgQ1 = document.test.Q01[idx].checked; } // 問2のチェック var flgQ2; for (var idx = 0; idx < 4; idx++) { flgQ2 = document.test.Q02[idx].checked; } // 問3のチェック var flgQ3; for (var idx = 0; idx < 5; idx++) { flgQ3 = document.test.Q03[idx].checked; } // 確認 if (flgQ1 && (!flgQ2 || !flgQ3)) { alert("問1で「持っていない」と回答した人は、問2にもお答えください"); return false; } } // --> </SCRIPT>
ご回答ありがとうございました。
早速試してみたのですが、エラーが出ません。
上記の例ですと、フォームの中で使用しているnameがQ01、Q02、Q03となってると思うのですが、
nameが変われば、どの部分を変更すればいいのでしょうか?
ごめんなさい!問3増えてたんですね…見落としてました><
お詫びに短いコードを。
あ、ポイントはいらないですよ。
function Check(){ var date1 = radio_obj(document.test.Q02); var date2 = radio_obj(document.test.Q03); alert(date1);alert(date2); if (document.test.Q01[3].checked == false &&(!date1 || !date2)) { alert("問1で「持っていない」と回答した人は、問2、問3にもお答えください"); return false; } } function radio_obj(obj){ for (i = 0 ; obj.length > i ; i++ ){ if (obj[i].checked){ return true; } } }
functionをもう一個作ってしまうと結構便利です。
ありがとうございます。
しかし、試してみると「undefined」というエラーが2回続けて出てしまいます。
どこが問題あるのかわかりません・・・
<SCRIPT Language="JavaScript"> <!-- function Check() { // 問1のチェック var flgQ1 = false; for (var idx = 0; idx < 3; idx++) { if(document.test.Q01[idx].checked == true){ flgQ1 = true; } } // 問2のチェック var flgQ2 = false; for (var idx = 0; idx < 4; idx++) { if(document.test.Q02[idx].checked == true){ flgQ2 = true; } } // 問3のチェック var flgQ3 = false; for (var idx = 0; idx < 5; idx++) { if(document.test.Q03[idx].checked == true){ flgQ3 = true; } } // 確認 if (flgQ1 && (!flgQ2 || !flgQ3)) { alert("問1で「持っていない」と回答した人は、問2にもお答えください"); return false; } } // --> </SCRIPT>
たぶん・・。
ご回答ありがとうございました。
これで試してみます。
ご回答ありがとうございました。
早速試してみたのですが、エラーが出ません。
上記の問2で選択肢の数が変わると影響しますか?