チェックボックスでアラートを表示するスクリプトについての質問

このQ&Aのポイント
  • 質問者は、複数のチェックボックスがある場合、どのように追加するべきかについて困っています。
  • 現在のスクリプトでは、1つのチェックボックスが選択されていない場合にアラートが表示されるようになっています。
  • 質問者は、1つのチェックボックスが選択されている場合はアラートを表示せずに処理を進めたいと考えています。
回答を見る
  • ベストアンサー

チェック判定のスクリプトについて教えてください

各リンクにチェックボックスが1つ付いています。 チェックを入れないとアラートが出るようにしているのですが、 複数チェックボックスがあるとどのように追加していいか分からず困っています。 例えばyahooのチェックボックスの前にチェックがついていれば、 他のチェックがついていなくてもアラートが出ず先に進めるようにしたいです。 現在手探りでここまで書いてみたのですが、後がどのようにしていいか分からなくなってしまいました。 <script type="text/javascript"> <!-- function Check() { if (!document.xxx.select01.checked){ alert("未チェックの項目があります。") return false; } } // --> </script> <form name="xxx"> <input type="checkbox" name="select01"><a onclick="return Check()" href="http://www.yahoo.co.jp/">yahoo</a><br> <br /> <input type="checkbox" name="select02"><a onclick="return Check()" href="http://www.google.com/">google</a><br /> <br /> <input type="checkbox" name="select03"><a onclick="return Check()" href="http://www.goo.ne.jp/">goo</a> </form> どなたかご教授頂ければ幸いです。 何卒よろしくお願い申し上げます。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

アンカーの一つ前のチェックボタンをチェックするだけならこう? <script> function Check(obj) { var p=obj; var flg=false; while(p=p.previousSibling){ if(p.nodeName=="INPUT" && p.type=="checkbox"){ flg=p.checked; break; } } if(!flg) alert("未チェックの項目があります。"); return flg; } </script> <form> <div><input type="checkbox" name="select01"><a onclick="return Check(this);" href="http://www.yahoo.co.jp/">yahoo</a></div> <div><input type="checkbox" name="select02"><a onclick="return Check(this);" href="http://www.google.com/">google</a></div> <div><input type="checkbox" name="select03"><a onclick="return Check(this);" href="http://www.goo.ne.jp/">goo</a></div> </form>

ramentognes
質問者

お礼

ご回答および動くコードまでありがとうございます! 大変助かりました。 (JavaScript初心者の私にとっては)このような動きでも複雑なコードになるのですね。 勉強させていただきます。

その他の回答 (1)

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 こんな感じでしょうか。 ==== JavaScript function check ( name ) { // チェック対象の名前をnameに受け取る // 受け取ったnameを元に要素を取得 var select = document.getElementsByName(name)[0]; // 取得した要素のチェック状態を返す // チェックされていればtrueが返るの return select.checked; } ==== HTML <form> <input type="checkbox" name="select01" value="y" /><a href="http://www.yahoo.co.jp" onclick="return check('select01');">Yahoo</a> <input type="checkbox" name="select02" value="g" /><a href="http://www.google.co.jp" onclick="return check('select02');">Google</a> <input type="checkbox" name="select03" value="e" /><a href="http://www.excite.co.jp" onclick="return check('select03');">Excite</a> </form>

ramentognes
質問者

お礼

ご回答ありがとうございます。 コメントもつけていただき参考になります。 勉強させていただきます!

関連するQ&A

  • チェックボックスの値の取得

    初歩的なことがわかりません。 チェックボックスをクリックしたときに、そのチェックボックスの値(Value)を取得する方法をアドバイス下さい。 <SCRIPT language=JavaScript> function test() alert(★)←この辺をうまく書きたい。 </SCRIPT> <INPUT TYPE="CHECKBOX" NAME="mycheck" VALUE="玄関" onclick="test()">玄関<BR> <INPUT TYPE="CHECKBOX" NAME="mycheck" VALUE="トイレ" onclick="test()">トイレ<BR> 「玄関」をクリックすると「玄関です」とalert 「トイレ」をクリックすると「トイレです」とalert 他のチェックボックスにチェックが入っているかは無視。クリックしたチェックボックスのvalueをalert。 下記質問の作業の初めの段階でつまづいています。 (^^; http://www.okweb.ne.jp/kotaeru.php3?q=387758

  • チェック出来る数を制限&チェックされない場合0

    【チェックボックスにチェック出来る数を制限しながら、チェックされない場合には0を入力する】ということが希望です。 それぞれを分離させた場合は、下記で可能でした。 この2つを同時に満たす方法が分かりません。 ご教授頂きたくお願いいたします。 【チェックボックスにチェック出来る数を制限する方法】 <SCRIPT language="JavaScript"> <!-- // チェックボックスに使用している名前 chn = new Array("ch1","ch2","ch3","ch4","ch5"); chc = 3; // チェックできる数 // チェックボックスにチェックできる数を制限する function chBx(cn){ cnt = 0; for(i=0; i<chn.length; i++) { if(document.form1.elements[chn[i]].checked) cnt++; } if(cnt > chc) { alert("チェックできる項目は" + chc + "個までです"); document.form1.elements[cn].checked = false; } } //--> </SCRIPT> <input type="checkbox" name="ch1" value="2" onClick="chBx('ch1')"> <label for="type1">1</label> <BR> <input type="checkbox" name="ch2" value="2" onClick="chBx('ch2')"> <label for="type1">2</label> <BR> <input type="checkbox" name="ch3" value="3" onClick="chBx('ch3')"> <label for="type1">3</label> <BR> <input type="checkbox" name="ch4" value="4" onClick="chBx('ch4')"> <label for="type1">4</label> <BR> <input type="checkbox" name="ch5" value="5" onClick="chBx('ch5')"> <label for="type1">5</label> <BR> 【チェックボックスがチェックされない場合に0を入力する】   <input type="hidden" name="ch1" value="0">   <input type="checkbox" onclick="this.form.ch1.value=this.checked ? 1 : 0">   <input type="hidden" name="ch2" value="0">   <input type="checkbox" onclick="this.form.ch2.value=this.checked ? 1 : 0">   <input type="hidden" name="ch3" value="0">   <input type="checkbox" onclick="this.form.ch3.value=this.checked ? 1 : 0">   <input type="hidden" name="ch4" value="0">   <input type="checkbox" onclick="this.form.ch4.value=this.checked ? 1 : 0">   <input type="hidden" name="ch5" value="0">   <input type="checkbox" onclick="this.form.ch5.value=this.checked ? 1 : 0"> 上記を同時に満たしたいというのが今回の質問の趣旨です。

  • checkbox の入力チェックのやり方について

    お世話になります。 フォームにて、 javascriptで、入力チェックをおこないたいと思っています。 チェックボックスについては、どれか選択が一つでもなければ、アラートで、文字を出したいと思いますが、うまくできません。 チェックボックスの入力確認の方法を教えてください。 よろしくお願いいたします。 現在作りかけのソースは、下記の通りです。 <html> <head><title>-</title></head> <body> <form method="post" action="" onsubmit="return form_Validator(this)"> <input type="text" name="a1" size="15" maxlength="12"> <BR> <input type="checkbox" name="a1001" value="1"> <input type="checkbox" name="a1002" value="1"> <input type="submit" value="登録" name="submit"> </form> <script Language="JavaScript"> <!-- function form_Validator(doc) { if ( doc.a1.value == "" ) { alert( "BAD" ); return false; } /* a1001かa1002のチェックボックスのチェックがなければアラート----*/ return (true); } //--> </script> </body> </html>

  • チェックボックスのチェックについて

    submit時に一つでもチェックがなければアラートを表示 チェックがあれば進む・・・としたいです。 <form action=next.html name=form1> <input type=checkbox name=checkbox1 value=1> <input type=checkbox name=checkbox2 value=2> <input type=checkbox name=checkbox3 value=3> <input type=checkbox name=checkbox4 value=4> <input type=checkbox name=checkbox5 value=5> ~以下50まで続きます <input type=submit value=submit> </form> function countChecked(form1) { var total = 0; var max = 50; for (var index = 0; index < form1.checkbox.length; index++) { total += form1.checkbox[index].checked ? 1 : 0; } if(countChecked(document.form1)) > 0) { return true; } else { alert("no"); return false; } return(total); } 過去に似たような質問を参考に作ってみましたがダメでした。 チェックボックスの名前の付け方が悪いのでしょうか。

  • チェックボックスのCGIへの値の受け渡し方

    チェックボックスで複数回答があった場合のデータの受け取りをどうしても分からないので教えてください。 別の人が作ったCGIを改造(今回の複数回答可の部分を)しています。以下のような記述だとvalue値が取れず、空白になっています。 【HTML】(チェックを2つ以上出来ないようにするためにJavascriptで制限をかけています。nameを同じにするやり方にしています。) <INPUT type="checkbox" name="q1" value="赤" onclick="return limitation(this,2)">赤<br> <INPUT type="checkbox" name="q1" value="黄" onclick="return limitation(this,2)">黄<br> <INPUT type="checkbox" name="q1" value="青" onclick="return limitation(this,2)">青<br> 【CGI】 use CGI qw(:standard); @check1=param("q1"); $result1=join(',',@check1); print "<td width=300><font size=2>$result1</font>&nbsp;</td>\n"; このPerlは@check1にq1のチェックが付いたものが格納されていると認識しています。では、どうしたらそれをとりだせるのでしょうか?初心者で申し訳ありません。やり方にこだわらず、今回の目標は (1)チェックボックスに規定(2つ)以上のチェックが入るとアラートでチェックしすぎた瞬間に知らせてくれる (2)2つチェックされた場合の値の取出しを可能にする。

    • ベストアンサー
    • Perl
  • 指定したチェックボックスに一斉にチェック

    下記の「関東」をクリックすると、東京、神奈川にチェックを入れたいのですが・・。実際のチェックボックスはたくさんあります。 function test() {ここにどうかく?} <a href="javaScript:test()">関東</a><BR> <INPUT TYPE="CHECKBOX" NAME="basho" VALUE="東京">東京  <INPUT TYPE="CHECKBOX" NAME="basho" VALUE="神奈川">神奈川  <INPUT TYPE="CHECKBOX" NAME="basho" VALUE="鹿児島">鹿児島  <INPUT TYPE="CHECKBOX" NAME="basho" VALUE="大分">大分

  • チェックボックスで得たデータを送信する場合

    CGIでデータの受け渡しを行い、決められたアドレスへ結果を送信するアンケートをつくっています。以前、チェックボックスで複数回答可とした場合の制限のかけ方をJavaScriptを用いた方法で教えてもらいましたが、これを利用して得た値をCGIで受け取りたいのですが、どうやって設定すればいいのでしょうか。「name」がそれぞれ名前が違う所でつまずいています。また<form method=post action="***.cgi">~</form>と項目全体をくくればいいのでしょうか?参考までに以下のHTMLを付記いたします。 <html> <head> <title>5個のうち3個しかチェックできないようにする</title> <script Language="JavaScript"><!-- function check(n) { fOBJ = document.myFORM; count = 0; for (i=1; i<=5; i++) if (fOBJ["CB"+i].checked) count++; if (count > 2) { alert("3個以上チェックできません"); fOBJ["CB"+n].checked = false; } } // --></script> </head> <body> <form name="myFORM"> <input type="checkbox" name="CB1" onClick="check(1)">チェック1<br> <input type="checkbox" name="CB2" onClick="check(2)">チェック2<br> <input type="checkbox" name="CB3" onClick="check(3)">チェック3<br> <input type="checkbox" name="CB4" onClick="check(4)">チェック4<br> <input type="checkbox" name="CB5" onClick="check(5)">チェック5<br> </form> </body> </html>

    • ベストアンサー
    • CGI
  • 複数あるチェックボックスの入力チェックするには?

    チェックボックスの入力チェックスクリプトを探しており、下記のようなスクリプトをネット検索で見つけました。 <!-- <script type="text/javascript"> function chNull(msg,obj) { if(!obj) return true; if((obj.type || obj[0].type) == 'checkbox'){ var flag = 0; if(obj.length){ for(var i=0; i<obj.length; i++) { if(obj[i].checked) flag = 1; } } else { if(obj.checked) flag = 1; } if(flag == 0) { alert(msg + 'を選択してください。'); return false; } } return true; } --> </script> <form method="POST" action="■.cgi" onSubmit="return chNull('チェックボックス',a);"> <input type="checkbox" name="a" value="A1" />A1 <input type="checkbox" name="a" value="A2" />A2 </form> 同じnameのチェックボックス群がひとつしかないときはこれで問題ないのですが、 下記のようにnameが複数ある場合にはこのスクリプトのどの部分を変えればよいのでしょうか? <input type="checkbox" name="a" value="A1" />A1 <input type="checkbox" name="a" value="A2" />A2 <input type="checkbox" name="b" value="B1" />B1 <input type="checkbox" name="b" value="B2" />B2 <input type="checkbox" name="c" value="C1" />C1 <input type="checkbox" name="c" value="C2" />C2 できればこのスクリプトをベースとして使用したいと思っています。どなたかお分かりの方がいらっしゃいましたらお教え下さいませ。 よろしくお願い致します。

  • チェックボックスにチェックしたファイルだけをダウンロードできるようにしたい

    サーバーにpdfファイルを10個保存しています。 HTMLページでチェックボックスにチェックを入れたpdfだけを ダウンロードできるようにURL入りの返信メールを自動的に送りたい のですが、やり方がわかりません。 どなたか詳しい人がおられましたら、教えていただけますでしょうか。 一応チェックボックスの過去の回答を見たのですが見当たりません。 (全て見れたわけではないですが) チェックボックス表示までは以下のところまでできたのですが。 よろしくお願いします。 <form> <input type="checkbox" name="グループ1" value="項目1">Apdf<br><br><br><br> <input type="checkbox" name="グループ1" value="項目2">Bpdf<br><br><br><br> <input type="checkbox" name="グループ1" value="項目3">Cpdf<br><br><br><br> <input type="checkbox" name="グループ1" value="項目4">Dpdf<br><br><br><br> <input type="checkbox" name="グループ1" value="項目5">Epdf<br><br><br><br> <input type="checkbox" name="グループ1" value="項目6">Fpdf<br><br><br><br> <input type="checkbox" name="グループ1" value="項目7">Gpdf<br><br><br><br> <input type="checkbox" name="グループ1" value="項目8">Hpdf<br><br><br><br> <input type="checkbox" name="グループ1" value="項目9">Ipdf<br><br><br><br> <input type="checkbox" name="グループ1" value="項目10">Jpdf<br><br><br><br> </form>

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

    ざっとですけれども <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; } といった感じで未入力チェックをしています。 チェックボックスが複数の場合はうまく動くのですが、チェックボックスがひとつだとうまくいきません。スクリプトで何か問題があるようでしたらご指摘お願いできませんでしょうか。よろしくお願いいたします。

専門家に質問してみよう