プルダウンを必須入力にする機能を付け足す方法

このQ&Aのポイント
  • テキストボックスなどに必須入力を設定するコードにプルダウンを必須入力にする機能を追加したい場合、特定の要素をチェックして必要なプルダウンが選択されているかを確認し、選択されていなければエラーメッセージを表示するように処理を追加する必要があります。
  • 具体的には、チェックする要素を配列として定義し、対応するプルダウンの選択肢を別の配列として作成します。ループを使用してチェックを行い、選択されていない場合はエラーメッセージを表示して、処理を中止するようにします。
  • このようにすることで、テキストボックスなどに加えてプルダウンを必須入力にする機能を追加することができます。ただし、具体的なコードが提供されていないため、問題の解決にはもう少し具体的な情報が必要かもしれません。ご参考までにお伝えした内容を元に再試行してみてください。
回答を見る
  • ベストアンサー

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

テキストボックスなどを必須入力にする以下のコードに プルダウンを必須入力にする機能を付け足したいのですが、 うまくいきません… どなたかご教授いただけませんでしょうか。 よろしくお願いいたします。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー <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 よろしくお願いいたします

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

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

>obj.type=="select"を追加するだけではできませんでしたm(_ _)m "select-one"ですね その他も含めてこんな感じで <script> function chkHissu(frm){ var hissu=[ {key:"test1",text:"テスト1"} ,{key:"test2",text:"テスト2"} ,{key:"test3",text:"テスト3"} ,{key:"test4",text:"テスト4"} ,{key:"test5",text:"テスト5"} ]; var error_no=-1; for(var i=0; i<hissu.length; i++){ var obj=frm.elements[hissu[i].key]; if((obj.type=="text" || obj.type=="textarea") && obj.value==""){ error_no=i; error_msg="は必須入力項目です"; break; } if((obj.type=="select-one") && obj.value==""){ error_no=i; error_msg="は必ず選択してください"; break; } if((obj.type=="checkbox") && !obj.checked){ error_no=i; error_msg="は必ずチェックしてください"; break; } if(obj.length>0 && obj[0].type=="radio"){ var flg=true; error_msg="はどれかを必ずチェックしてください"; for(var j=0;j<obj.length;j++){ if(obj[j].checked){ flg=false; break; } } if(flg) error_no=i; } } if(error_no>=0){ alert(hissu[error_no].text+error_msg); return false; }else{ return true; } } </script> <form onsubmit="return chkHissu(this)"> <input type="text" name="test1"> <textarea name="test2"></textarea> <select name="test3"> <option value="">選択して</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <input type="checkbox" name="test4"> <input type="radio" name="test5" value="1"> <input type="radio" name="test5" value="2"> <input type="radio" name="test5" value="3"> <input type="submit" value="go"> </form>

manaka1314
質問者

お礼

す、すごいっ(゜◇゜;)!! おかげ様で、考えたとおりに動くようになりました!! ありがとうございます! その他の必須のやり方までご丁寧に本当にありがとうございます! 大変勉強になりましたm(_ _)m

関連する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> どうかお分かりになる方よろしくお願いいたします。

  • プルダウンの必須チェックができない

    今必須チェックのスクリプトを組んでいます。 プルダウン項目の必須チェックを行っているところで、項目を選択しても「必須入力です」というアラートが出てしまいます。 ソースは以下参照です <!-- 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箇所も書きたかったのですが、ちょっとソースが長くなってご迷惑をおかけしてしまうと思い、割愛させて頂きました。 もし必要であれば一言頂ければと思います。 忙しい中すいませんが、どなたかご教授宜しくお願いします。

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

    過去にほぼ同じ質問がありましたが、それでも解決出来なかったので質問させていただきました。 フォームで未入力の項目に対してアラートとフォーカスされるようにしました。 そこにプルダウンメニューを加えたものを作ろうとしたのですが、アラートの内容が全部同じ(職業が選択されていません)になってしまった事と、アラートは表示されたのですが、プルダウンメニューを選択してもアラートが出続けてしまいます。 プルダウンメニューが未選択の場合にのみアラートを表示するにはどうしたらよいでしょうか。 <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> ご存知の方がいらっしゃいましたらご教授願います。

  • 送信前のチェック

    よろしくお願い致します。 メールフォームの送信前チェックをしたく、過去記事の 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; } どうぞ、よろしくお願い致します。

  • 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; } 必須チェックですが、最後のチェックボックスだけがチェックしても「…は必須です」とアラートが表示されてしまいます。どうか宜しくお願いします

  • 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>

  • 複数フォームに同じ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>

  • テキストボックスに入力されたらラジオボタンにチェック

    いつもお世話になっております。 タイトル通りなのですが テキストボックスに入力された時に、チェックボックスや ラジオボタンににチェックが付くようなJavaScriptを思考しています。 test.php ---------------------------------------- <form name="form1" method="post" action="test.php"> <input type="checkbox" name="235[]" value="1"> <input name="394" type="text" style="ime-mode: active" onchange="text_check('235')" value="" /> </form> script.js ---------------------------------------- function text_check(nm) {  obj = document.form1;  alert(obj.elements[nm + '[]'].length); // アラートで「undefined」と出てしまう。  for( i=0; i<obj.elements[nm + '[]'].length; i++){   obj.nm[i].checked = true;  } } フォームのラジオボタン、テキストボックスのname属性は 数字じゃない場合は、問題なさそうなのですが 数字の場合だとうまく動作してくれません。 name属性を変更することは考えていません。 ご教示よろしくお願いいたします。

  • 一つのチェックボックスでテキストフィールドとプルダウンリストを制御

    現在以下のようなテキストフィールドとプルダウンがあります。 <form name="register" action="register_kakunin.php" method="post"> <input type="checkbox" name="name_check" onclick="fchk(this,1);" /> <input name="revenue" onChange="keisan()" type="text" id="revenue" size="6" readOnly="true"/> <input type="checkbox" name="chk" onclick="fchk2(this)" /> <select name="paymethod" disabled="disabled"> <option value="">Pay Method</option> <option value="cash">cash</option> <option value="card">card</option> <option value="point">point</option> <option value="coupon">coupon</option> </select> </form> これを function fchk(obj, name_check){ var frm=document.register; if(!obj.checked){ /* チェックされたら、テキストボックスを有効化 */ frm.revenue.readOnly=true; }else{ /* チェックが外されたら、テキストボックスを無効化 */ frm.revenue.readOnly=false; } } function fchk2(obj) { var frm=obj.form; var len=frm.elements.length; /* フォームの要素数 */ if(obj.checked==true){ /* チェックボックスが選択されている場合、   プルダウンを有効化(disabled=false) */ frm.elements["paymethod"].disabled=false; }else{ /* チェックボックスが選択されていない場合、   プルダウンを無効化(disabled=true) */ frm.elements["paymethod"].disabled=true; } } という2つのスクリプトで制御しているのですが、前者を操作するときには必ず後者も操作することになるため、一つのチェックボックスで2つとも制御できるようにしたいのですが、どうしたらいいのでしょうか? 上記のjavascriptはネットから拾ってきたもので、自作ではありません。 宜しくお願いします。

専門家に質問してみよう