• ベストアンサー

プルダウンメニューのvalue値が00のときアラートを表示したい

似たような記事が多くそれぞれの回答を試してみたのですが、うまくいかなかったため質問させていただきます。 ただいまテキストBOXとプルダウンメニューで成り立つ入力フォームを作成しています。 そこで、テキストはすべて入力した状態、プルダウンメニューを一番上以外のものを選択した状態でないと次の画面に遷移しないようにしたいのですが、プルダウンメニューの所だけうまくいきません。どうか回答よろしくお願いします。以下にソースをすべて載せておきます。 <html> <head> <title>test</title> <script language="JavaScript"><!-- function check(){ fName = ["id","name","grade","english","math","japanese","science","society"]; for (i=0; i<8; i++){ txt = document.forms[0].elements[fName[i]].value; if (txt == "") { alert("すべての項目を入力してください"); return false; } } var sel; sel = document.forms.school.value; if(sel=="00"){ alert("選択されていない項目があります");//アラート表示 return false; } return true; } // --></script> </head> <body> <form action="student_add1.php" name="forms" method="get" onSubmit="return check()"> 生徒番号:<select name="school"> <option value="00">==学校名==</option> <option value="01">桜中学校</option> <option value="02">紅葉中学校</option> <option value="03">青山中学校</option> <option value="04">高岡中学校</option> <option value="05">中野中学校</option> </select><input type="text" name="id" size="3"><br> 氏名:<input type="text" name="name" size="12"><br> 学年:<input type="text" name="grade" size="2"><br> 模試成績:<br><br>英語:<input type="text" name="english" size="3"> 数学:<input type="text" name="math" size="3"> 国語:<input type="text" name="japanese" size="3"> 理科:<input type="text" name="science" size="3"> 社会:<input type="text" name="society" size="3"><br> <input type="submit" value="送信"> <input type="reset" name="reset" value="リセット"> </form> </body> </html>

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

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

単純な記載ミスですね × sel = document.forms.school.value; ○ sel = document.forms[0].school.value; ちなみにformでcheck()を呼ぶときに check(this)として、フォームをオブジェクトとしてわたしてやると かなりすっきりしたスクリプトがかけます

wappiy1985
質問者

お礼

返答が遅くなり申し訳ございません。 指摘していただいたように修正したところ、うまく動作するようになりました。とても早い回答ありがとうございました。 なお、 >check(this)として、フォームをオブジェクトとしてわたしてやると >かなりすっきりしたスクリプトがかけます ということですが、その場合 sel = document.forms[0].school.value;を sel = obj.forms[0].school.value; と変更することになるのでしょうか?大学の課題でやっている程度ですので、全く詳しいことが理解出来ていません。 余力がございましたらご教授いただけるとうれしく思います。

その他の回答 (2)

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

#2です たとえば、こんなかんじにformタグのなかでthisをつかうと そのフォーム自体が関数にわたされます。 今回はそれをfというオブジェクトに格納したので、 document.forms[0]といちいち書かずに、fで代用できるわけです。 フォームを番号で管理しているとhtmlを拡張するときに 番号がかわってしまったりすると書き直しになって管理が大変です。 オブジェクトでわたしてやると名前や番号で管理しなくてすむので なにかと便利です。 <html> <head> <title>test</title> <script language="JavaScript"><!-- function check(f){ var fName = ["id","name","grade","english","math","japanese","science","society"]; var txt =""; for (i=0; i<8; i++){ txt = f.elements[fName[i]].value; if (txt == "") { alert("すべての項目を入力してください"); return false; } } var sel= f.school.value; if(sel=="00"){ alert("選択されていない項目があります");//アラート表示 return false; } return true; } // --></script> </head> <body> <form onSubmit="return check(this)"> ・・・・ </form> </body> </html>

wappiy1985
質問者

お礼

おお、確かにすっきりしますねぇ。 一応大学の課題は完成したのでここで閉めさせていただきますが、 気が向いたら本格的に勉強してみようと思います。 迅速な回答ありがとうございました。

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.1

sel = document.forms.school.value; if(sel=="00"){ この2行を var sel = document.forms.school.selectedIndex; if(sel==0){ とされてはいかが?

wappiy1985
質問者

お礼

試したところうまく動作はいたしませんでしたが、 とても早い回答ありがとうございました。 また機会がありましたらよろしくお願いいたします。

関連するQ&A

  • アラートを出したいのですが・・

    以下のような感じでラジオボタンのリンクで、何も選択していない状態でGOボタンを押すと アラートが出るようにしたいのですが、どうしたらよいのかわからなくて困っています。 できれば、フルーツを選んでない場合は「フルーツを選んでください」と、価格を選んでない場合は 「価格を選んでください」と、両方選んでない場合は上記の2つとも出るようになれば理想なんですけど・・・ どうか宜しくお願い致します。m(_ _"m)ペコリ <script language=javascript> <!-- window.onload = function(){ document.forms[0]["GO"].onclick = function(){ var fruits2 = document.forms[0]["fruits"]; var price2 = document.forms[0]["price"]; function getCheckedElement(nl){ for(var i=0;i<nl.length;i++){ if(nl[i].checked) return nl[i]; } } var fruits = getCheckedElement(fruits2).value; var price = getCheckedElement(price2).value; URL = '/' + fruits + '/' + price; window.location = URL; } } --> </script> <form action="javascript:void(0)"> <input type="radio" name="fruits" value="APPLE">リンゴ<br> <input type="radio" name="fruits" value="ORANGE">ミカン <BR><BR> <input type="radio" name="price" value="100.html">100円均一商品<BR> <input type="radio" name="price" value="300.html">300円均一商品<BR> <input type="radio" name="price" value="500.html">500円均一商品<BR> <BR><BR> <input type="button" value="GO" name="GO" onclick="check()"> </form>

  • javascriptでのアラート表示

    javascriptで大変困っております。 ラジオボタン・テキストエリアにまたがったチェックアラートをだしたいのですが、うまくいきません。 <script> function form_check(f) { if (f.Q1.value == "") { alert("・未記入です!"); return false; } ・ ・ ・ if (f.Q6.value == "") { alert("・名前が未記入です!"); return false; } else return true; } function reset_conf() { if (confirm("フォーム内容をリセットします!\n\nよろしいですか?")) return true; else return false; } </script> -------- <FORM ACTION="hogehoge.cgi" METHOD="POST" onSubmit="return form_check(this)"> 教育:<INPUT TYPE="radio" NAME="Q1" VALUE="OK"> テスト:<INPUT TYPE="radio" NAME="Q2" VALUE="OK">  アンケート:<INPUT TYPE="radio" NAME="Q3" VALUE="OK"> AAA:<input name="Q4" type="text" /> BBB:<input name="Q5" type="text" /> CCC:<input name="Q6" type="text" /> <INPUT TYPE="hidden" NAME="number" VALUE="6"> <INPUT TYPE="submit" NAME="answer" VALUE="送信する"> <INPUT TYPE="reset" NAME="reset" VALUE="リセット"> </FORM> </form> ------- テキストエリアのアラートチェックは出来ない状態です。 すべてにチェックまたは、テキスト入力がされていないと送信できないようにしたいのです。 どうしたらよいでしょうか?

  • ボタンで選択されていないセレクトメニューの非反映2

    前回、「ボタンで選択されていないセレクトメニューの非反映」という質問をさせて頂いたものです。 http://okwave.jp/qa/q7093835.html 文章構成などは下記のHTMLをしようしているのですが…。 「蓋付きのボックス」の<ラジオボックスをチェックしなければ選択できない>はクリアできたのですが、「蓋付きバスケット」の方で迷っています。 後はこれで合計金額がきちんと出ればいいのですが…、 もうすこしお力とお時間を頂けないでしょうか? <html> <head> <title>簡単見積もり表</title> <script Language="JavaScript"> <!-- function calc() { n = 0; fObj = document.myFORM; n += eval(fObj.sel0.options[fObj.sel0.selectedIndex].value); n += eval(fObj.sel1.options[fObj.sel1.selectedIndex].value); for (i=0; i<3; i++) if (fObj[i].checked) n += eval(fObj[i].value); for (i=3; i<19; i++) if (fObj[i].checked) n += eval(fObj[i].value); fObj.result.value = n; } function linker(evt){ var t = evt.target || evt.srcElement; if(t.nodeName != "INPUT" || t.type != "radio") return; var sel, i, s; sel = t.form.getElementsByTagName("select"); for(i=0; s=sel[i++];) if(/(^| )linkage( |$)/.test(s.className)){ t = s.previousSibling; while(t && (t.nodeName != "INPUT" || t.type != "radio")) t = t.previousSibling; if(t) s.disabled = !t.checked; } } // --></script> </head> <body> <form name="myFORM" action="#" onclick="linker(event)"> <BR> <b>セットの果物を一つお選び下さい</b><br> <input type="radio" name="ch1" value="100">りんご(100円) <input type="radio" name="ch1" value="20">バナナ(20円) <input type="radio" name="ch1" value="200">梨(200円) <input type="radio" name="ch1" value="250">ブドウ(250円) <input type="radio" name="ch1" value="150" checked>みかん(150円)<br> <BR> <b>リボンの色をお選びください</b><br> <input type="radio" name="ch2" value="0" checked>赤(0円) <input type="radio" name="ch2" value="2000">青(0円) <input type="radio" name="ch2" value="0">金(10円)<br> <hr> <b>バスケットの形をお選び下さい</b><br> <INPUT type="radio" name="cover" value="1200" checked>プラスチック丸型編み込み\1200<INPUT type="checkbox" name="bx1" value="500">素材を木に変更(+\500)<BR> <INPUT type="radio" name="cover" value="1500">編み込み四角\1500<BR> <INPUT type="radio" name="cover" value="1500">編み込み楕円\1500<BR> <INPUT type="radio" name="cover" value="1000">蓋なしボックスレインボー1000円<br> <INPUT type="radio" name="cover" value="covered"><b>蓋付きのボックス</b> 色によって値段が変化します<br> <select class="linkage" name="color_of_cover" disabled> <OPTION value="0" selected>色を選択</OPTION> <OPTION value="39900">赤1000円</OPTION> <OPTION value="52500">青1000円</OPTION> <OPTION value="54600">金1100円</OPTION> </select><BR> <INPUT type="radio" name="cover" value="0"><b>蓋付きバスケット</b> 形によって値段が変化します<BR> <select name="sel1"> <OPTION value="0" selected>形を選択</OPTION> <OPTION value="1500">丸 1500円</OPTION> <OPTION value="1600">四角 1600円</OPTION> <OPTION value="1600">楕円 1600円</OPTION> </select> <br><hr><BR> <b>ご希望のオプションがあれば選択して下さい。(複数選択可)</b><BR> <INPUT type="checkbox" name="bx1" value="300">クッション材\300 <INPUT type="checkbox" name="bx1" value="200">飾り\200<BR> <INPUT type="checkbox" name="bx1" value="150">メッセージカード\150 <INPUT type="checkbox" name="bx1" value="2500">花束\2,500<BR> <BR> <hr> <input type="button" value="合計を出す" onClick="calc()"><br> 合計<input type="text" name="result"><br> </form> </body> </html>

  • <input>のvalue値をプルダウンメニューから受け取りたいのです

    <input>のvalue値をプルダウンメニューから受け取りたいのですが、Javascriptを使用すれば出来るものでしょうか?もし可能でしたら、そのコードを教えて頂きたいです。 当方htmlとcssが少し出来る程度で、ウェブで調べても分からなかったので質問させていただきました。 以下はソースになります。 プルダウンのソース: <FORM> <SELECT> <OPTION SELECTED>SELECT</OPTION> <OPTION VALUE="AAABBB">A</OPTION> <OPTION VALUE="BBBBBB">B</OPTION> <OPTION VALUE="CCCCCC">C</OPTION> </SELECT> </FORM> ↑上で選択したvalueの値を、↓下の「ここの値」に渡したいです。 inputのソース: <input name="hosted_button_id" value="ここの値" type="hidden"> 宜しくお願いいたします。

  • メールフォームでプルダウンの内容だけ送られてこない

    HTMLファイルでデザインができるメールフォームのcgiで、 名前とEメールアドレスは送られてくるのですが プルダウンの内容だけ、送られてこないんです。 ちなみに携帯サイト用です。 プルダウンの入れ方がおかしいんだと思うのですが 何がいけないのでしょうか? --------------------------------- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>フォームメール</title> </head> <body text="#000000" bgcolor="#FFFFFF" link="#0000FF" vlink="#0000FF"> <center>フォームメール</center> <hr> <form action="./mail.cgi" method="${INFO_METHOD}"> <input type="hidden" name="system_mode" value="preview"> <input type="hidden" name="need_input_message" value="1"> 名前<br> <input type="text" name="system_name" value=""><br> Eメール<br> <input type="text" name="system_mail" value=""><br> テスト<br> <select name="test01"> <option value="" selected="selected">選択してください</option> <option value="テスト1">テスト1</option> <option value="テスト2">テスト2</option> <option value="テスト3">テスト3</option> <option value="テスト4">テスト4</option> </select> テスト<br> <select name="test02"> <option value="" selected="selected">選択してください</option> <option value="テスト1">テスト1</option> <option value="テスト2">テスト2</option> <option value="テスト3">テスト3</option> <option value="テスト4">テスト4</option> </select> <br> <input type="checkbox" name="system_copy" value="on" checked> 送信者にコピーを送る<br> <br> <input type="submit" value="確認画面へ"> </form> <hr> ▲<a href="${INFO_BACK}">戻る</a> <hr> </body> </html> --------------------------------------- 今はこうなってます。 何か間違っている箇所、足りない箇所がありましたら ぜひ教えてください。 よろしくお願い致します。

    • ベストアンサー
    • HTML
  • プルダウンメニューのvalue値を連携したい。

    お世話になります。 初心者です。 下記のようなプルダウンメニューがあるのですが、 select name = "no" の1を選んだら その下の select name、 no_1、no_2、no_3、no_4、も 1になるよう、また select name = "no" の2を選んだら その下の select name、 no_1、no_2、no_3、no_4、も 2になるように連携したいのです、 またそれぞれのvalue値をPHPでPOSTしたいのです。 どうやったらできるのかわかりません サンプルプルグラム等でも良いので ご教授の程よろしくお願い致します。 <form name="name_no" id="name_no" method="post" onSubmit="return check()"> <select name = "no"> <option value = "1">1</option> <option value = "2">2</option> </select> <select name = "no_1"> <option value = "1">1</option> <option value = "2">2</option> </select> <select name = "no_2"> <option value = "1">1</option> <option value = "2">2</option> </select> <select name = "no_3"> <option value = "1">1</option> <option value = "2">2</option> </select> <select name = "no_4"> <option value = "1">1</option> <option value = "2">2</option> </select> </form> <input type="submit" >

  • 未選択のプルダウンメニューをアラートしたい

    過去に同じような質問もありましたが、いろいろ検索してこちらの過去ログを拝見しても解決できなかったので質問させてください。 フォームで未入力の項目に対してアラート&フォーカスされるようにしました。 ここに『住んでいる県』(プルダウン)を追加したいのですがどうしてもうまくいきません。 <script type='text/javascript'> <!-- function check(frm){ var hissu=Array('name','zip','sex'); 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{ for(var j=0, chk=0; j<obj.length; j++){ if(obj[j].checked) chk++; } if(chk==0){   alert(hissu_nm[i]+'は必須です'); return false; } } } return true; } //--> </script> どうかお分かりになる方よろしくお願いいたします。

  • 複数プルダウンで検索

    楽天市場自社サイト内に、3種類のプルダウンから選択した商品を検索したく試行錯誤していますが私の知識では限界だと言うことがわかりました。 お力をいただければと思い投稿いたしました。 何か良い方法はありますでしょうか <BODY> <FORM name="myForm" method="GET" action="http://esearch.rakuten.co.jp/rms/sd/esearch/vc?" target="_blank"> 種類<BR> <SELECT NAME="t1"> <OPTION VALUE="Tシャツ" SELECTED>Tシャツ <OPTION VALUE="Gパン">Gパン <OPTION VALUE="トレーナー">トレーナー </SELECT> <BR> サイズ<BR> <SELECT NAME="t2"> <OPTION VALUE="S" SELECTED>S <OPTION VALUE="M">M <OPTION VALUE="L">L </SELECT> <BR> 色<BR> <SELECT NAME="t3"> <OPTION VALUE="レッド" SELECTED>レッド <OPTION VALUE="ホワイト">ホワイト <OPTION VALUE="ブラック">ブラック </SELECT> <BR> <BR> <BR> <input type="hidden" name="sid" value="xxxxxx"><input type="hidden" name="su" value="xxxxxx"><input type="hidden" name="sn" value="xxxxxx"><input type="text" name="sitem"><BR> <input type="button" name="sitem" value="結合" onClick="ketugou()"><BR> <BR> <br> <input type="submit" value="商品検索"></FORM> </BODY>

  • プルダウンメニューで値を渡したいのですが

    すみません。今phpとhtmlであるサイトを作っているのですが プルダウンメニューを選択した後、ボタンを押すことなく選択した途端ページ移動 して、値を持って行きたいのですがjavascriptはまったく知らないためやり方がわかりません。 いろいろググってそれらしいスクリプトを見つけたのですが以下だとまったく動的に反応しません。 (ページも移動しません) 最終的にpost[ffa]に値であるniやameなどを入れたいのですがどこをどういじれば良いでしょうか・・。 <form name="ffa" method="post" action="abc.php"> <script type="text/javascript"> <select name="sel1" onChange="document.forms['ffa'].submit()" > <option value="ni">日本</option> <option value="ame">アメリカ</option> <option value="igi">イギリス</option> <option value="su">スウェーデン</option> </select> </script>

  • 『`』がテキストタイプのvalueにある場合にhiddenを追加すると表示が崩れる

    言葉では説明できないためコードを記載致しました。 下記のコードでボタンを押下した場合に表示が崩れるのは何故でしょうか?(IE6,IE7で確認) 又、対策としてはどのような事が考えられるでしょうか?(『`』を入力禁止以外でお願い致します。) 尚、innerHTMLをalertで出すとうまく追加されていないようです。。。 よろしくお願い致します。 <html> <head> <script> function createhidden( name, value, formname ){ str = '<input type="hidden" name="aaa" value="bbb"/>'; document.forms[0].innerHTML += str; } </script> </head> <body> <form action="" name="form1"> <input type="text" name="b"value="`"/><br><br> <input type="button" value="CREATE HIDDEN" onclick="createhidden()"/> <input type="text" name="a"value="`"/><br><br> </form> </body> </html>

専門家に質問してみよう