人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

※質問に間違いがありましたので、改めて質問させていただきます。
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>

●質問者: mathematician
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:JavaScript test いただきます アンケート エラーメッセージ
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● 牛乳先生(tukihatu)
●50ポイント

べつに再質問しなくても聞いちゃえば良かったのに^^;

ちょこっと変えるだけですよ。

<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でもいけますよ

◎質問者からの返答

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

早速試してみたのですが、エラーが出ません。

上記の問2で選択肢の数が変わると影響しますか?


2 ● aside
●50ポイント

長くなっちゃった・・・

<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 ● 牛乳先生(tukihatu)
●50ポイント

ごめんなさい!問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回続けて出てしまいます。

どこが問題あるのかわかりません・・・


4 ● KUROX
●50ポイント
<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>

たぶん・・。

◎質問者からの返答

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

これで試してみます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ