未選択のプルダウンメニューでアラートを表示する方法

このQ&Aのポイント
  • 未選択のプルダウンメニューをアラートする方法について質問です。
  • フォームで未入力の項目に対してアラート&フォーカスされるようにしましたが、住んでいる県のプルダウンメニューを追加することができません。
  • 解決策をご教授いただける方にお願いします。
回答を見る
  • ベストアンサー

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

過去に同じような質問もありましたが、いろいろ検索してこちらの過去ログを拝見しても解決できなかったので質問させてください。 フォームで未入力の項目に対してアラート&フォーカスされるようにしました。 ここに『住んでいる県』(プルダウン)を追加したいのですがどうしてもうまくいきません。 <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> どうかお分かりになる方よろしくお願いいたします。

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

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

radioボタンであることを判断するのと プルダウン(selectタグ)であることの判断を 追加しました。 チェックボックスも判断するのであれば type=='checkbox'も必要になります。 <script type='text/javascript'> <!-- function check(frm){ var hissu=Array('name','zip','sex', 'aaa'); 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; } //--> </script> <form action="" method=post onSubmit="return check(this);"> 名前<input name="name" type="text" id="name"> <br> 郵便番号<input name="zip" type="text" id="zip"> <br> <input name="sex" type="radio" value="radiobutton"> 男  <input name="sex" type="radio" value="radiobutton"> 女 <br> あああ <select name="aaa"> <option value="">--選択してください--</option> <option value="aaa">aaa</option> <option value="bbb">bbb</option> <option value="ccc">ccc</option> </select> <br> <input type=submit value="送信"> </form>

yuzu007
質問者

お礼

ありがとうございます、ありがとうございます! 完璧に作動いたしました!! 何日も悩んでいたのにこんなに早く解決することができたなんて…!なんとお礼を言っていいやらわかりません。 本当にありがとうございました!

その他の回答 (3)

回答No.4

VCATさん、ご指摘ありがとうございます。 optionを指定してしまっていますね。 動作確認をしていませんでした。 すみません。

  • VCAT
  • ベストアンサー率20% (16/79)
回答No.2

No.2さんの > for(var j=0, chk=0; j<obj.length; j++){ > if(obj[j].checked) chk++; > } > if(chk==0){ >   alert(hissu_nm[i]+'は必須です'); > return false; > } 一番上ということでしたら if(obj[j].selectedIndex == 0) { alert(hissu_nm[i]+'は必須です'); return false; } ですが、optionの場合は警告がちがいますね。 不可視の警告になります。

yuzu007
質問者

お礼

わざわざ見ていただいてありがとうございました。

回答No.1

プルダウンの未選択とはどういったときでしょうか。 プルダウンの場合は常にどれかが選択された状態になっています。 一番上(selectedIndexが0)の場合は未選択ということでしょうか。 それともvalueが空(value="")のときが未選択でしょうか。 > for(var j=0, chk=0; j<obj.length; j++){ > if(obj[j].checked) chk++; > } > if(chk==0){ >   alert(hissu_nm[i]+'は必須です'); > return false; > } 一番上ということでしたら if(obj[j].selectedIndex == 0) { alert(hissu_nm[i]+'は必須です'); return false; } valueが空ということでしたら if(obj[j].value == '') { alert(hissu_nm[i]+'は必須です'); return false; }

yuzu007
質問者

補足

回答どうもありがとうございました! すみません、<option value="">の場合でした。 字数制限で書けなかったのですが、この後 <form action="" method=post onSubmit="return check(this);"> 名前<input name="name" type="text" id="name"> <br> 郵便番号<input name="zip" type="text" id="zip"> <br> <input name="sex" type="radio" value="radiobutton"> 男  <input name="sex" type="radio" value="radiobutton"> 女 <br> <input type=submit value="送信"> </form> と続き、最初のスクリプトはテキストエリアとラジオボタンに対するチェックでした。 ここで今回お教えいただいたものを追加すると言うことは、 }else{ からどう記入すればよろしいのでしょうか。 もしよろしければお教え願えないでしょうか。

関連するQ&A

  • プルダウンメニューを選択していない時に送信ボタンを押した場合、(必須の)アラートを表示したい。

    過去にほぼ同じ質問がありましたが、それでも解決出来なかったので質問させていただきました。 フォームで未入力の項目に対してアラートとフォーカスされるようにしました。 そこにプルダウンメニューを加えたものを作ろうとしたのですが、アラートの内容が全部同じ(職業が選択されていません)になってしまった事と、アラートは表示されたのですが、プルダウンメニューを選択してもアラートが出続けてしまいます。 プルダウンメニューが未選択の場合にのみアラートを表示するにはどうしたらよいでしょうか。 <SCRIPT language="JavaScript"> <!-- function chkHissu(frm){ var hissu=Array('name','kana','age','mail','sex','syumi'); 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; } function check(value){ //数字かどうかのチェック if(isNaN(value)){ alert("数値を半角で入力してください。"); //警告コメント document.form1.age.focus(); return false; } //入力があるかどうかのチェック if(!value){ alert("年齢を入力してください。"); //警告コメント document.form1.age.focus(); return false; } } function checkAd(address){ if(!address){ alert("メールアドレスを入力してください。"); } else if(address.indexOf("@",0)<=0){ alert("メールアドレスが正しくありません。"); document.form1.mail.select(); return false; } } //-- </SCRIPT> ご存知の方がいらっしゃいましたらご教授願います。

  • プルダウンを必須入力にする機能を付け足したい

    テキストボックスなどを必須入力にする以下のコードに プルダウンを必須入力にする機能を付け足したいのですが、 うまくいきません… どなたかご教授いただけませんでしょうか。 よろしくお願いいたします。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー <script type="text/javascript"> function chkHissu(frm){ var hissu=Array("test1","test2"); var hissu_nm = Array("テスト1","テスト2"); 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; } } } return true; } </script> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 素人考えで、 var hissu=Array("test1","test2","test3"); と var hissu_nm = Array("テスト1","テスト2","テスト3"); ifの部分に単純に obj.type=="select"を追加するだけではできませんでしたm(_ _)m 何か簡単でもいいので、解説いただけると大変喜びますm(_ _)m よろしくお願いいたします

  • 送信前のチェック

    よろしくお願い致します。 メールフォームの送信前チェックをしたく、過去記事の 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 hissuCheck(frm) { /* 必須入力のname属性 */ var paramArray = Array(23個あるが字数制限のため省略) /* 必須入力アラート用 */ var alrtArray = Array(23個あるが字数制限のため省略); /* 配列長 */ var len = paramArray.length; for(i=0; i<len; i++) { var obj = frm.elements[paramArray[i]]; if(obj.type == "text") { if(obj.value == "") { alert(alrtArray[i]+"は必須入力です"); frm.elements[paramArray[i]].focus(); return false; } } else if (obj.type == "select") { for(varSelected=0, j=0; j<obj.length; j++) { /*選択されていたらvarSelectedフラグをプラス*/ if(obj[j].selected)varSelected++; } if(varSelected == "") { alert(alrtArray[i]+"は必須入力です"); return false; } } else { for(varChecked=0, k=0; k<obj.length; k++) { .....以下省略 } } } return true; } // --> HTML箇所も書きたかったのですが、ちょっとソースが長くなってご迷惑をおかけしてしまうと思い、割愛させて頂きました。 もし必要であれば一言頂ければと思います。 忙しい中すいませんが、どなたかご教授宜しくお願いします。

  • javascriptでメールアドレスが同一か確認

    javascriptでメールアドレスが同一か確認 現在、問い合わせフォームをつくっております。 必須項目を部分的に作るのまではできたのですが、 メールアドレスを必須項目にしつつ、 メールアドレス確認の欄で同一のアドレスが記入されているのかを確かめ、 違った場合は「違います」とアラートをだしたいのです。 どのようにしたらいいのでしょうか? 急ぎの為大変困っております。 どうかご回答お願い致します。 以下はこちらのサイトを参考に作成しました http://f32.aaa.livedoor.jp/~azusa/?t=js&p=formcheck#a_chkHissu ------java部分----- <script type="text/javascript"> function sample(frm){ /* 必須入力のname属性 */ var hissu=Array("name","hurigana","mail","mail2","naiyo"); /* アラート表示用 */ var hissu_nm = Array("お名前","ふりがな","メールアドレス","メールアドレス確認","内容"); /* 必須入力の数 */ var len=hissu.length; for(i=0; i<len; i++){ var obj=frm.elements[hissu[i]]; /* テキストボックス or テキストエリアが入力されているか調べる */ if(obj.type=="text" || obj.type=="textarea"){ if(obj.value==""){ /* 入力されていなかったらアラート表示 */ alert(hissu_nm[i]+"は必須入力項目です"); /* 未入力のエレメントにフォーカスを当てる */ frm.elements[hissu[i]].focus(); return false; } }else{ /* radioボタンがチェックされているか調べる */ for(var j=0, chk=0; j<obj.length; j++){ /* チェックされていたらchkフラグをプラス */ if(obj[j].checked) chk++; } if(chk==0){ /* 1つもチェックされていない場合はfalseを返してフォーム送信しない */ alert(hissu_nm[i]+"は必須入力項目です"); return false; } } } /* 必須入力項目が全て入力されている場合はtrueを返してフォーム送信 */ return true; } </script> ------html部分----- <form action="mail/●◎●.php" name="toiawase" method="post" onsubmit="return sample(this)"> ~省略~ メールアドレス<input type="text" name="mail" value="" size="35" maxlength="60"> メールアドレス確認<input type="text" name="mail2" value="" size="35" maxlength="60"> </form> 宜しくお願い致します。

  • checkbox必須チェック

    function hissuCheck(form) { var paramArray = Array("…24個"); var alrtArray = Array("…24個"); var len = paramArray.length; for(i=0; i<len; i++) { var obj = form.elements[paramArray[i]]; if(obj.type == "text") { if(obj.value == "") { alert(alrtArray[i]+"は必須入力です"); form.elements[paramArray[i]].focus(); return false; } } else if(obj.type == "select-one" || obj.type == "select-multi") { for(varSelected=0, j=0; j<obj.options.length; j++) { if(obj.options[j].selected)varSelected+=obj.options[j].value; } if(varSelected == 0) { alert(alrtArray[i]+"は必須入力です"); form.elements[paramArray[i]].focus(); return false; } } else { for(varChecked=0, k=0; k<obj.length; k++) { if(obj[k].type == "checkbox") { if(obj[k].checked)varChecked++; } } if(varChecked == 0) { alert(alrtArray[i]+"は必須入力です"); return false; } } } return true; } 必須チェックですが、最後のチェックボックスだけがチェックしても「…は必須です」とアラートが表示されてしまいます。どうか宜しくお願いします

  • 複数フォームに同じnameがある場合の入力チェック

    うまく入力チェックが動作せず、行き詰まっており困っております。 アドバイスを頂ければ助かります。ソースは以下です。 function chkform(frm){ var mst=Array("dep","plan"); var mst_nm = Array("出発地","プラン"); var len=mst.length; for(i=0; i<len; i++){ var obj=frm.elements[mst[i]]; if(obj.type=="text" || obj.type=="textarea"){ if(obj.value==""){ alert(mst_nm[i]+"は必須入力項目です"); frm.elements[mst[i]].focus(); return false; } }else{ for(var j=0, chk=0; j<obj.length; j++){ if(obj[j].checked) chk++; } if(chk==0){ alert(mst_nm[i]+"は必須入力項目です"); return false; } } } return true; } <form name="order1" onsubmit="return chkform(this)"> <input type="radio" name="dep" value="osa" />大阪   <input type="radio" name="dep" value="tky">東京 <br /> <select name="plan"> <option value="">▼プランを選択▼</option> <option value="biz">出張</option> <option value="tvl">旅行</option> <option value="day">日帰り</option> </select> <br /> <input type="submit" name="btn1" value="確認"> </form> <form name="order2" onsubmit="return chkform(this)"> <input type="radio" name="dep" value="osa" />大阪   <input type="radio" name="dep" value="tky">東京 <br /> <select name="plan"> <option value="">▼プランを選択▼</option> <option value="biz">出張</option> <option value="tvl">旅行</option> <option value="day">日帰り</option> </select> <br /> <input type="submit" name="btn2" value="確認"> </form>

  • java script フォームのチェックボックス入力制限について

    java script フォームのチェックボックス入力制限について どなたかお教えください。 以下のコードを書き換えて、現状では1つのチェックボックスを複数にし(かつ、複数選択可にし)、チェックボックスをチェックした場合のみ「選択肢」ラジオボタンがアクティブになる仕様にしたいと考えております。 サイト上で見つけたサンプルコードをいじっているのですが、何分素人なのでうまく行きません。どなたか助けていただけると助かります。 よろしくお願いします。 <script type="text/javascript"> function fchk3(obj){ var frm=obj.form; var len=frm.elements.length; if(obj.checked==true){ for(var i=0; i<len; i++){ if(frm.elements[i].type=="radio"){ frm.elements[i].disabled=false; } } }else{ for(var i=0; i<len; i++){ if(frm.elements[i].type=="radio"){ frm.elements[i].checked=false; frm.elements[i].disabled=true; } } } } </script> <form name="form3" action="#"> <label for="chk3"><input type="checkbox" id="chk3" name="chk3" onclick="fchk3(this)" checked="checked" />このボタンのチェックを外すとラジオボタンが無効化</label><br /> <label for="chk3_r1"><input type="radio" id="chk3_r1" name="r1" />選択肢</label> </form>

  • documentオブジェクトのlengthが取れない

    以下のプログラムでobjのlengthが「undefined」となる原因がわからない <script language="JavaScript"><!-- function Check() {alert("スタート"); var obj = document.frm.elements['check']; var i,j =0;alert("length="+ obj.length); for (i = 0; i < obj.length ; i++ ) { if ( obj[i].checked == true ) {j++;} } alert( 'チェックボックスの数='+ i); alert( 'チェックした数='+ j); } //--></script> <form name="frm" method="POST"><input type="checkbox" name="check" value="1"></form> <a href="javascript:Check();">チェック</a> formの中を以下のように変更すると正しく表示される <form name="frm" method="POST"><input type="checkbox" name="check" value="1"><input type="checkbox" name="check" value="2"></form> どなたか、ご教授くださいませ。

  • プルダウンメニューの再選択時

    いつもお世話になります。 プルダウンメニューを誤って選択した時などに、 上の階層に戻って再選択をする場合、 一番上の階層のプルダウンに戻ると下層のプルダウンが消えて、 改めて初めからの選択が可能なのですが、 たとえば二番目の階層のプルダウンに戻った場合、 プルダウンが消えずに、さらに下、下へとプルダウンが作成されてしまいます。 戻ったところよりの下の階層のプルダウンだけを消すにはどのようにしたらよいですか? <script language="javascript"><!-- x = document.getElementsByTagName("select"); function showthis(obj) { for(i=1;i<x.length;i++) { x[i].style.display = "none"; } if(!obj) return false; document.getElementById(obj).style.display = "inline"; } function showthis2(obj) { for(i=6;i<10;i++) { x[i].style.display = "none"; } if(!obj) return false; document.getElementById(obj).style.display = "inline"; } function showthis3(obj) { for(i=10;i<16;i++) { x[i].style.display = "none"; } if(!obj) return false; document.getElementById(obj).style.display = "inline"; } function showthis4(obj) { for(i=16;i<22;i++) { x[i].style.display = "none"; } if(!obj) return false; document.getElementById(obj).style.display = "inline"; } function jump(url) { if(!url) return false; window.open(url,""); } // --> </script> <style type="text/css"><!-- select { display:none; } #item0 { display:inline; } --></style>

専門家に質問してみよう