JavaScriptで、アンケートのラジオボタンの空欄チェックを行う方法を教えてください。ラジオボタンの質問が2問あります。問1(選択肢は4つ)で4番目を選択した人は、問2(選択肢は4つ)の回答が必須になります。問1で4番目を選択して、かつ問2で何も選択してない場合のみ、ポップアップでエラーメッセージを出したいのです。(※問1の空欄チェックは今回は不要です。)以下のスクリプトを加工して使いたいのですが、どのようにすればいいかを教えていただけないでしょうか。


<SCRIPT Language="JavaScript">
<!--
function Check()
{
if (document.test.Q01[3].checked == true) { alert("問1で「持っていない」と回答した人は、問2にもお答えください"); return false; }
}
// -->
</SCRIPT>

回答の条件
  • 1人2回まで
  • 登録:2008/02/05 15:45:57
  • 終了:2008/02/05 17:14:38

回答(3件)

id:aside No.1

aside回答回数339ベストアンサー獲得回数312008/02/05 16:01:19

ポイント50pt

先をこされたかっ?

<SCRIPT Language="JavaScript">
<!--
function Check()
{
// 問2のチェック
var flgQ2;
for (var idx = 0; idx < 4; idx++) {
  flgQ2 = document.test.Q02[idx].checked;
}
// 問1問2のチェック
if (document.test.Q01[3].checked && !flgQ2) { alert("問1で「持っていない」と回答した人は、問2にもお答えください"); return false; }
}
// -->
</SCRIPT>
id:mathematician

早速の回答ありがとうございました。

しかし、私の早とちりで問題が間違っておりました。「問1(選択肢は4つ)で4番目を選択した人は~」ではなく、

「問1(選択肢は4つ)で1番目~3番目を選択した人~」でした。(4番目を選択した人は問2を回答しなくていい)

ポイントを上乗せさせていただきますので、修正案をお願いできないでしょうか。よろしくお願いします。

2008/02/05 16:37:52
id:tukihatu No.2

牛乳先生(tukihatu)回答回数180ベストアンサー獲得回数322008/02/05 16:05:17

ポイント50pt

これが一番かな?

<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 == true && !date) { alert("問1で「持っていない」と回答した人は、問2にもお答えください"); return false; }
}
// -->
</SCRIPT>

ここにも同じ方法が書いてありました

http://chaichan.hp.infoseek.co.jp/qa3500/qa3977.htm

id:mathematician

早速の回答ありがとうございました。

しかし、私の早とちりで問題が間違っておりました。「問1(選択肢は4つ)で4番目を選択した人は~」ではなく、

「問1(選択肢は4つ)で1番目~3番目を選択した人~」でした。(4番目を選択した人は問2を回答しなくていい)

ポイントを上乗せさせていただきますので、修正案をお願いできないでしょうか。よろしくお願いします。

2008/02/05 16:37:49
id:KUROX No.3

KUROX回答回数3542ベストアンサー獲得回数1402008/02/05 17:03:35

ポイント50pt

<SCRIPT Language="JavaScript">

<!--

function Check()

{

var fQ1 = false;

var fQ2 = false;

var objQ1 = document.test.Q02;

var objQ2 = document.test.Q02;

//Q1のチェック

for (i = 0 ; i<=2 ; i++ ){

if (objQ1[i].checked){

fQ1 = objQ1[i].value ;

break;

}

}

//Q2のチェック

for (i = 0 ; i<=3 ; i++ ){

if (objQ2[i].checked){

fQ2 = objQ2[i].value ;

break;

}

}

if (fQ1 == true && fQ2 == false ) { alert("問1で「持っていない」と回答した人は、問2にもお答えください"); return false; }

}

// -->

</SCRIPT>

こんな感じですかね。

id:mathematician

早速の回答ありがとうございました。

しかし、私の早とちりで質問に間違いがありましたので、改めて質問させていただきます。

よろしければ、そちらのほうにもご回答ください。

2008/02/05 17:13:41

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • http://q.hatena.ne.jp/1202193955ラジオボタンがチェックされてるかどうかをチェックするのに、radioの名前の後ろに [ ] で数字を指定してできるんですね。勉強になりました。 問1 1 2 3 持っ...
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません