アンケート送信のチェックについて

このQ&Aのポイント
  • アンケート送信時にチェックされていない項目があったら「すべての項目をチェックしてください」とメッセージを表示したいです。
  • フォームの項目をチェックするためのJavaScriptのソースコードがありますが、うまく動作しません。
  • チェックボックスのエレメントのタイプが「radio」になっているため、チェックしないで送信することができてしまいます。
回答を見る
  • ベストアンサー

アンケート送信のチェックについて

初心者で本を見ながらアンケートを作っています。 質問事項はラジオボタンで選ぶようになっていて、 送信時にチェックされていない項目があったら「すべての項目をチェックしてください」とメッセージを出したいです。 ある本に「フォームに空欄がないか確認する」ソースがあったのでそれを応用したいのですが上手くできません。 =====ソースは下記です。===== <script language="JavaScript"> <!-- function check(){ for( i=0; i<document.form1.length; i++ ){ if(document.form1.elements[i].type =="radio"){ if(document.form1.elements[i].value ==""){ alert("すべての項目にチェックをしてください"); return false; } } } return true; } //--> </script> ~~~~ ~~~~ <FORM NAME="form1" action="****/*****.pl" method="POST" onSubmit="return check()"> ~~~ ~~~ =====ここまで 本にはtype =="radio"のところが"text"になっていたのですが、エレメントの種類には"radio"もあったので これをいれればチェック出来ると思ったのですが、チェックしないで送信ができてしまいます。 どなたかご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

function check(){ var befname = ""; var namehantei = true; var nameradio; for( i=0; i<document.form1.length; i++ ){ if(document.form1.elements[i].type =="radio"){ nameradio = document.form1.elements[i].name; if(befname == nameradio){ thishantei = document.form1.elements[i].checked; if(thishantei){ namehantei = true; } }else{ if(namehantei){ befname = nameradio; namehantei = document.form1.elements[i].checked; }else{ alert("すべての項目にチェックをしてください"); return false; break; } } } } if(!namehantei){ alert("すべての項目にチェックをしてください"); } return namehantei; }

naopyon
質問者

お礼

ご回答ありがとうございました。頂いたソースをそのまま使ってみました。お陰様でチェックができました。ソースに書かれている意味がまだわからず苦労していますが少しずつ勉強したいと思っています。 本当に助かりました。ありがとうございました!

その他の回答 (2)

  • Y_eRu
  • ベストアンサー率32% (33/101)
回答No.2

こんにちわ(o^-^o) えっとちょっと気になったのでお邪魔します。 チェックは「全質問に各々ラジオボタンがチェックされているか?」を見るのですよね? 書かれているif文が「ラジオボタンが空つまりチェックされていなかったらアラート表示」なので これだとfor文で順番に見ていることから 『一番目のラジオボタンが空だったら』 (つまり絶対1番目の答えにチェックがないと抜けない) の条件になってしまっているのでは? と思ったもので・・。 なのでif文を if(document.form1.elements[i].checked){  return true; } にして、 trueが返らずにfor文を抜けてしまったらアラートを表示 のようにした方がいいのではと思います。 見当違い&大きなお世話でしたらすみません(汗) 失礼しましたm(_ _)m

naopyon
質問者

お礼

ご回答ありがとうございました。 すみません。。頂いたif文を何処の部分にはめ込んだらよいのかわかりません。。いろいろ試してみたのですが・・もっと勉強しなくちゃダメですね。 コメント頂いているようにチェックは「全質問に各々ラジオボタンがチェックされているか?」を確認したいと思っています。

回答No.1

お疲れ様です。 if(document.form1.elements[i].value ==""){ の部分を if(document.form1.elements[i].checked == true){ に変更してください。 radioはtextと違いvalueで判断するのではなくchecked がtrueかfalseかで判断します。 true:チェック有り false:チェック無し

naopyon
質問者

お礼

早々のご回答ありがとうございました。 上記部分だけを修正してみたのですが、送信されてしまいました・・

関連するQ&A

  • チェックボタンの受け取り方法

    フォーム作成したチェックボタンの受け取り方法を教えてください。 javaのプログラムを書きたいのですがわかりません。助けてください。 <html> <head> <title>練習</title> <body> <script language="Java Script"> <!-- function send_form(){ for(i=0;i<5;i++){ if(document.form1.Q1[i].checked==true){ int a1=i; return a1; } } } //--> </script> </head> <p> <form action=http://localhost:8080/MyApp/servlet/Param2 method=get> Q1 質問をここに書き込む </p> <form name="form1" action="cgi-bin/formsample.cgi" method="post" onSubmit="return send_form()"> <p> <input type='radio'name='Q1'>思う <input type='radio'name='Q1'>やや思う <input type='radio'name='Q1'checked>どちらでもない <input type='radio'name='Q1'>やや思わない <input type='radio'name='Q1'>思わない </p> <input type="submit" value="送信する"><input type="reset" value"書き直す"> </form> </body> </html>

    • ベストアンサー
    • Java
  • CheckBoxの入力チェックについて

    CheckBoxの入力チェックについて CheckBoxの数は可変です。 全て未チェックのときにalertを表示したいです。 今はチェックしてもalertが表示されてしまいます。 よろしくお願いします。 <html> <head> <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>チェックボックス入力チェック</title> <SCRIPT TYPE="text/javascript"> <!-- function item_check() { count = 0; for (i=0;i<=document.form1.elements['item[]'][i].length;i++){ if(document.form1.elements['item[]'][i].checked){ count++; } } if(count==0){ alert("項目を選択してください。"); return(false); } return(true); } --> </SCRIPT> </head> <body> <form name="form1" method="POST" action="test.htm" onSubmit="return item_check()"> <p><input type="checkbox" name="item[]" value="1">項目1</p> <p><input type="checkbox" name="item[]" value="2">項目2</p> <p><input type="checkbox" name="item[]" value="3">項目3</p> <p><input type="checkbox" name="item[]" value="4">項目4</p> <p><input type="checkbox" name="item[]" value="5">項目5</p> <input type="submit" name="kakunin" value="確認"> </form> </body> </html>

  • ネスケで動かない空白チェック

    下記のようにリストボックスの未選択をチェックしていますが、ネスケだと動きません。アドバイスをいただけないでしょうか。 function submitCheck(){ for( i=0 ; i<document.main.length ; i++ ){ if(document.main.elements[i].type == "select-one" && document.main.elements[i].value == "err"){ alert("未選択項目があります。"); document.main.elements[i].focus(); return false; } } } <FORM NAME="main" ACTION="test.cgi" METHOD="post" onSubmit="return submitCheck()"> <SELECT NAME="性別"> <OPTION value="err" SELECTED>↓【選択して下さい】</OPTION> <OPTION>男</OPTION> <OPTION>女</OPTION> </SELECT> <INPUT TYPE="submit" VALUE="送 信" onClick="document.main.name.value=''">

  • 送信前のチェック

    よろしくお願い致します。 メールフォームの送信前チェックをしたく、過去記事の http://okwave.jp/qa2275666.html を使わせて頂いております。 お聞きしたいことが複数ありましたので、下記にまとめました。 ●チェックボックスの入力チェックを追加したい (↓ラジオボタンのスクリプトをチェックボックスに置き換えてみたのですが、うまく動作しませんでした。) ●メールアドレスと確認用メールアドレスが合ってるかのチェックと、できれば書式チェックを追加したい function check(frm) { var hissu=Array('name','assumedname','poatal','address','address2','tel','email','email2','sendcheck'); var hissu_nm = Array('お名前','フリカナ','郵便番号','ご住所','ご住所(建物名・部屋番号)','電話番号','メールアドレス','確認用メールアドレス','入力内容のチェック'); var len=hissu.length; for(i=0; i<len; i++) { var obj=frm.elements[hissu[i]]; if(obj.type=='text' || obj.type=='textarea') { if(obj.value=='') { alert(hissu_nm[i]+'は必須入力項目です。必ずご入力下さい。'); frm.elements[hissu[i]].focus(); return false; } } else if(obj[0].type=='radio') { for(var j=0, chk=0; j<obj.length; j++) { if(obj[j].checked) chk++; } if(chk==0) { alert(hissu_nm[i]+'は必須入力項目です。必ずご選択下さい。'); obj[0].focus(); return false; } } else if(obj.tagName=='select') { if(obj.value == '') { alert(hissu_nm[i]+'は必須入力項目です。必ずご入力下さい。'); obj.focus(); return false; } } } return true; } どうぞ、よろしくお願い致します。

  • チェックボックスの選択チェック

    ラジオボタンの選択チェック、セレクトボタンの選択チェックのあとにチェックボックスの選択チェックをしたいのですが、どのように入れればよいのでしょうか。教えてください。 ↓参考までに↓ function check() { var flag=0; if( document.form1.seibetu.length){ flag=1; var i; for(i=0; i<document.form1.seibetu.length; i++) if(document.form1.seibetu[i].checked)flag=false; } if(flag){ alert('性別が選択されていません'); return false; } if(document.form1.nenrei.value=="")flag=true; if(flag){ alert('年齢が選択されていません'); return false; } if( document.form1.Q1.length){ flag=1; var i; for(var i=0; i<document.form1.Q1.length; i++) if(document.form1.Q1[i].checked)flag=false; if(flag){ alert('Q1が選択されていません'); return false; } else {★★★ここに入れたい★★★   ;} } }

  • チェックボックスの未入力チェック

    ざっとですけれども <form action="**" name="myform" onsubmit="return Check()" method=post> <input type="checkbox" name="Erasedata" id="Erasedata" value="1" > <input type="checkbox" name="Erasedata" id="Erasedata" value="2" > ・・・ <input type="checkbox" name="Erasedata" id="Erasedata" value="5" > <input type="submit" value="選択されたものを削除する"> このようなチェックボックスがあったとして function Check() { for (i=0;i<document.myform.length;i++)  {   if(document.myform.Erasedata[i].checked==true) {return true;}  } alert("どこかにチェックを入れて下さい "); return false; } といった感じで未入力チェックをしています。 チェックボックスが複数の場合はうまく動くのですが、チェックボックスがひとつだとうまくいきません。スクリプトで何か問題があるようでしたらご指摘お願いできませんでしょうか。よろしくお願いいたします。

  • 年月日のチェックなんですが…

    いつもお世話になっております。 数日に渡り、あれこれと模索していましたが、どうしても分からないのでご質問させて頂きます。 どなたかご教授頂ければ幸いです。 やりたい内容と致しましては、 複数あるテキストの年月日が正しいものであるかどうかのチェックをJavascriptで行いたいのですが、どうしても始めの1つしかチェックを行ってもらえず、2つ目は全くチェックがかからない状態です。 どうやればいいのでしょうか… 因みにソースは以下の様に書いてみました。 <html> <meta http-equiv="Content-Type" content="text/html;charset=EUC-JP"> <head> <title>月日チェック</title> <script language="JavaScript"><!-- function check() {  txt = document.myFORM.elements["num[]"][0].value;  txt2 = document.myFORM.elements["num[]"][1].value;  var hoge = [ txt,txt2 ];  for(i=0; i<2; i++) {   if(!hoge[i] == "") {    if(!hoge[i].match(/^\d{4}\/\d{1,2}\/\d{1,2}$/) ){     alert("開始日の入力に誤りがあります\n\n例:2009/01/01 or 2009/1/1");     return false;    }    myData = hoge[i].split("/");    var vYear = myData[0] - 0;    var vMonth = myData[1] - 1;    var vDay = myData[2] - 0;    if(vMonth >= 0 && vMonth <= 11 && vDay >= 1 && vDay <= 31){     var vDt = new Date(vYear, vMonth, vDay);     if(vDt.getFullYear() == vYear && vDt.getMonth() == vMonth && vDt.getDate() == vDay){      return true;     }else {      alert("正しい月日を入力して下さい");      return false;     }    }else {     alert("正しい月日を入力して下さい");     return false;    }   }  } } // --></script> </head> <body> <form name="myFORM" method="post" action="res.html" onSubmit="return check()"> <input type="text" size="16" name="num[]"> <br> <input type="text" size="16" name="num[]"> <input type="submit" value="調べる"> </form> </body> </html>

  • 複数のラジオボタンのチェック

    複数のラジオボタンが全て選択されているかどうかのチェックのJavaScriptをすっきりした形で書くのは、どうしたらいいでしょうか? 下記のようですと、ダラダラと記述するようになってしまいます。 どなたかご教授ください。 --------------------------------------- <script type="text/javascript"> function insert_onClick() { j=0; for (i=0 ;i < document.F1.a11.length ; i++){ if (document.F1.a11[i].checked) { j=1; } } } </script> <form action="check.php" name="F1" onsubmit="return insert_onClick()"> 各valueは0~4まであります <input type="radio" name="a11" value="0"> <input type="radio" name="a12" value="0"> <input type="radio" name="a21" value="0"> <input type="radio" name="a22" value="0"> <input type="radio" name="b11" value="0"> <input type="radio" name="b12" value="0"> <input type="radio" name="b21" value="0"> <input type="radio" name="b22" value="0"> ---------------------------------------

  • チェックボックスのチェック。応用編

    こんにちわ。 チェックボックスがチェックされているかのチェックを行いたいのですが、チェックボックスをデータベースにある内容をループで表示させ、チェックされたデータをPOSTで送信するために少々submitの使い方が違います。 削除ボタンを押すと確認画面がでてOKを押した場合にチェックボックスにチェックされていなければ警告画面を出したいのですが、どうもうまくいきません。 よい方法をご教授ねがえないでしょうか。 ==FORM======================================= <form method ="POST" name="form1" onSubmit="return check()" action ="****" > <% Iterator it =sagyoubi.iterator(); // 検索された行数分ループ while(it.hasNext()){ String item= (String)it.next(); %> <INPUT TYPE="CHECKBOX" NAME="sagyoubii" VALUE="<%= item %>"><a href="****" target="Main"> <% } // end while %> <INPUT TYPE="button" VALUE="削除" style="font-size:18" onclick="if(confirm('これらのデータを削除してもよろしいですか?')) { submit(); }"> </form> ==SCRIPT================================= <SCRIPT TYPE="text/javascript"> <!-- function check(){ var flag = 1; if(document.form1.sagyoubii.checked){ flag = 0; } if(flag){ window.alert('チェックされていません'); return false; // 送信を中止 } else{ return true; // 送信を実行 } } //--> </SCRIPT>

  • フォームの入力チェックをすると既に入力した項目が消える

    実は過去のQ&Aの中でご紹介されていた ホームページを拝見させて頂いたのですが、 残念ながら私の応用力が足りず、 上手く作ることが出来ません。 下記のように書いてみたのですが、 これでは未入力のメッセージにOKを押すと その前に入力したものが全て消えてしまいます。 何方か、正しい書き方をご教示下さいますよう 宜しくお願い申し上げます。 <script language="JavaScript"> <!-- function checkForm(){ if(document.form1.chk1.checked == false && document.form1.chk2.checked == false) { alert('チェックなし'); return false; } { flag = 0; for ( i = 0 ; i < document.form1.radiobtn.length ; i++){ if (document.form1.radiobtn[i].checked){ flag = 1; } } if (!flag){ alert('ラジオなし'); return false; } if(document.form1.sel.selectedIndex == 0){ alert('メニューなし'); document.form1.sel.focus(); return false; } if(document.form1.bun.value == ""){ alert('文字なし'); document.form1.bun.focus(); return false; } } return true; } //--> </script>

専門家に質問してみよう