メールフォームの入力チェックが動かない!修正方法を教えてください!

このQ&Aのポイント
  • 前任者が制作したメールフォームの入力チェックが動かないということで、修正をしてみたのですが、思うように動いてくれません。
  • 問題のjavascriptは、入力されていない項目に対してアラートが出るようになっていますが、最後の同意のチェックボックスについてはスルーされてしまいます。
  • 私自身javascriptに関してはあまり知識がなく、手さぐりで試してみましたが、うまくいきません。詳しい方に教えていただきたいです。
回答を見る
  • ベストアンサー

メールフォームの入力チェックが動きません

前任者が制作したメールフォームの入力チェックが動かないということで、 修正をしてみたのですが、思うように動いてくれません。 javascriptで作成されていて、 テキストフォームとプルダウンのチェックまでは未入力だと、 アラートが出てくるのですが、 最後の同意のチェックボックスの未チェックはスルーされてしまいます。 問題のjavascriptは下記になります。 ----------------------------------------------------------------- var mndFileds=new Array('Company','Last Name','Email','Phone','LEADCF3','Description'); var fldLangVal=new Array('会社名','お名前','メールアドレス','お電話番号','お問い合せ種別','お問い合せ内容'); function checkMandatery(){ for(i=0;i<mndFileds.length;i++){ var fieldObj=document.forms['name1'][mndFileds[i]]; if((fieldObj) && ((fieldObj.value).replace(/^\s+|\s+$/g, '')).length==0){ alert(fldLangVal[i] +' を入力してください。'); fieldObj.focus(); return false; }else if(fieldObj && (fieldObj.nodeName=='SELECT') && (fieldObj.options[fieldObj.selectedIndex].value=='-None-')){ alert(fldLangVal[i] +' を入力してください。'); fieldObj.focus(); return false; }else if(document.forms['name1'].acceptance.checked){ alert('にチェックをしてください。'); return false; } } } ----------------------------------------------------------------- メールフォームのhtmlは以下になります。 ----------------------------------------------------------------- <form action='' name='name1' method='POST' onSubmit='javascript:document.charset="UTF-8"; return checkMandatery()' accept-charset='UTF-8'> <p>会社名(必須):<input name='Company' type='text' size="30" maxlength='100'/></p> <p>お名前(必須):<input name='Last Name' type='text' size="30" maxlength='80' /></p> <p>メールアドレス(必須):<input name="Email"></p> <p>お電話番号(必須):<input name='Phone' type='text' size="30" maxlength='30' /></p> <p>Webサイト:<input name='Website' type='text' size="40" maxlength='120' value="http://" /></p> <p>お問い合せ種別(必須): <select name='LEADCF3'> <option value='-None-'>–なし–</option> <option value='種別1'>種別1</option> <option value='種別2'>種別2</option> <option value='種別3'>種別3</option> </select></p> <p>お問い合せ内容(必須):<textarea name='Description' cols="40" width='250' height='250'></textarea></p> <p><input type="checkbox" name="acceptance" value="1" class="wpcf7-acceptance" />同意する</p> <p><input type="image" src="btn_send_contact.jpg" alt="送信する" name='save' /> <input type="image" onClick="this.form.reset();return false" src="btn_reset_contact.jpg" alt="リセットする" name='reset' /></p> </form> ----------------------------------------------------------------- 私自身javascriptに関してはあまり知識がなく、 手さぐりでこんな感じかな?と思っていろいろ試したり、調べてみましたが、 いい方法が思いつきませんでした。 詳しい方、ぜひご回答をお願いいたします。

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

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

>}else if(document.forms['name1'].acceptance.checked){ の行はmndFiledsに宣言されていないフィールドなのでforループのなかで チェックしてもelseにひっかからないですね forの外にもってくるかmndFiledsに入れるかのどちらか <script> var mndFileds=new Array('Company','Last Name','Email','Phone','LEADCF3','Description','acceptance'); var fldLangVal=new Array('会社名','お名前','メールアドレス','お電話番号','お問い合せ種別','お問い合せ内容','同意する'); function checkMandatery(f){ for(var i=0;i<mndFileds.length;i++){ var obj=f.elements[mndFileds[i]]; if(!obj) continue; if( ((obj.type=="text" || obj.type=="textarea") && obj.value=="")|| (obj.type=='select-one' && obj.selectedIndex==0) ){ alert(fldLangVal[i] +' を入力してください。'); obj.focus(); return false; } if(obj.type=="checkbox" && !obj.checked){ alert(fldLangVal[i]+'にチェックをしてください。'); return false; } } } </script> <form action='' name='name1' method='POST' onSubmit='return checkMandatery(this)' accept-charset='UTF-8'> <p>会社名(必須):<input name='Company' type='text' size="30" maxlength='100'/></p> <p>お名前(必須):<input name='Last Name' type='text' size="30" maxlength='80' /></p> <p>メールアドレス(必須):<input name="Email"></p> <p>お電話番号(必須):<input name='Phone' type='text' size="30" maxlength='30' /></p> <p>Webサイト:<input name='Website' type='text' size="40" maxlength='120' value="http://" /></p> <p>お問い合せ種別(必須): <select name='LEADCF3'> <option value='-None-'>?なし?</option> <option value='種別1'>種別1</option> <option value='種別2'>種別2</option> <option value='種別3'>種別3</option> </select></p> <p>お問い合せ内容(必須):<textarea name='Description' cols="40" width='250' height='250'></textarea></p> <p><input type="checkbox" name="acceptance" value="1" class="wpcf7-acceptance" />同意する</p> <p><input type="image" src="btn_send_contact.jpg" alt="送信する" name='save' /> <input type="image" onClick="this.form.reset();return false" src="btn_reset_contact.jpg" alt="リセットする" name='reset' /></p> </form>

nabeyama614
質問者

お礼

ご回答、ありがとうございます! なるほど…mndFileds内に宣言しないと動かないんですね。 とりあえず、増やせばいけるかな??と思っていたので ^_^; 参考ソースもありがとうございます! 何とか動作することができました!

関連するQ&A

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

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

  • 選択肢によって入力必須が変わるフォームの入力チェックJavaScrip

    選択肢によって入力必須が変わるフォームの入力チェックJavaScript フォームの入力チェックのJavaScriptを作成しています。 特定のラジオボタンにチェックを入れた場合のみ、 入力必須になるテキストボックスの 入力チェックJavaScriptを教えてください。 ラジオボタンが複数あるフォームで、 <input type="radio" name="type" value="type1" /> <label>タイプ1</label> <input type="radio" name="type" value="type2" /> <label>タイプ2</label> タイプ2を選んだ場合のみ、必須項目にしたいテキストボックスがあります。 <input type="text" name="name1" /> テキストボックスが空白だった場合にアラートを出すJavaScriptは 現在このようになっています。 (参考にしていたサイトがあるのですが、忘れてしまいました・・・。) $(function(){ $("form1").submit(function(){ if($("input[name='name1']").val()==""){ $("input[name='name1']").css("border","1px solid #A70F00"); alert('必須項目に未入力があります'); return false; }) }) このJavaScriptをさらに、if文で括って、 name="type" の value が type2 であれば・・・、という処理を追加すればよいのだと 思いますが、書き方が分からず困っています。 どうかよろしくお願いします。

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

  • JAVAスクリプトでのFORM入力チェックの方法

    JAVAスクリプトでのFORM入力チェックの方法を教えてください。 ネットでいろいろ探してはめ込んだのですが、動作するプログラムが下記のしかありませんでした。 ラジオボタンの入力チェックとプルダウンの入力チェックを同時にしたいのですがよくわかりません。 今の状態ではラジオボタンをチェックしても未入力のアラートが出てしまいます。 あとこれにプルダウンの入力チェックをつけたいのですが… すいませんがどなたか教えてください。よろしくお願いします。 function Form_Validator(theForm) { var flag=false; var i; for(i=0; i<theForm.OPT-00-06.length; i++){ if (theForm.OPT-00-06[i].checked){ flag = true; break; } } if(!flag){ alert("\"OPT-00-06\" にチェックしてください。"); return (false); } if(confirm("入力もれはありません。")){ return (true); }else{ return (false); } <form name="form1" method="POST" action="~cgi?" onsubmit="return Form_Validator(this);"> ・ ・ <input type="radio" name="OPT-00-06" value="A"> <input type="radio" name="OPT-00-06" value="B"> ・ ・ <select name="OPT-00-07"> <option value="">選択してください</option> <option value="80">80</option> <option value="81">81</option> ・ ・ ・ <select name="OPT-00-08"> <option value="">選択してください</option> <option value="35">35cm</option> <option value="36">36cm</option> ・ ・ ・ <input type="submit" value="カートに入れる" name="submit">   <input type="reset" value="内容をクリア" name="reset"> </div> </form>

  • フォームのname値を配列にしてJavaScriptでフォームのチェックをする方法

    JavaScriptでフォームの半角数字のチェックをしたいのですが、 form内容をCGI(PHP)に渡すためname値を配列にしないといけないのですが、 以下のスクリプトだとエラーが出てしまいます。 *実際はif(isNaN~)と<input~>をループで書き出しており、行数が不特定なので それぞれ別のname値を使うことができない状態です。 <script language="JavaScript"> function check() { if(isNaN(document.form1.hoge[0].value)){ alert("値は半角数字で入力してください。"); return(false); } if(isNaN(document.form1.hoge[1].value)){ alert("値は半角数字で入力してください。"); return(false); } return(true); } </script> <form method="post" action="xxx.cgi" onSubmit="return check()" name="form1"> <input type="text" name="hoge[0]"> <input type="text" name="hoge[1]"> </form> 特にCGIに渡す必要がなければ <input type="text" name="hoge"> <input type="text" name="hoge"> としてやればチェックができるのですが、どうしても次の 処理があるためname値を配列にする必要があります。 解決方法がわかる方がおられましたらご教授ください。 以上よろしくお願いいたします。

  • 検索フォームの入力値のチェック

    以下は、いくつもある検索フォームの中のテキストボックスの一つです。 ここに、次のエラーチェックを仕込みたいのですが。 (1) 17で始まる8桁数字以外はアラートを出す。NULLもダメ。 (2) 半角数字以外が入力されたときは、フォーカスが離れた時アラートを表示NULLはOK。 (3) ここに示していないその他のフォームを含め、一個でも上記エラーがあったら   検索ボタン押下時にアラートを出し、POSTを許可しない。 いろいろエラーになったり、(1) ができてなかったりで、すみませんが 完璧にするためのアドバイスいただけないでしょうか。IE6オンリーで十分です。 <html> <head> <script type="text/javascript"> function NullCheck() { if ( document.query.numberform.value=="" ) { alert( "必ず17で始まる半角数字8桁で指定してください。\n例:17910031" ); return 1; } return false; } function NumbCheck() { var str = document.query.numberform.value; if( str.match( /[^0-9]+/ ) ) { alert("不正な値がみつかりました。"); return 1; } return 0; } /* 全部チェック */ function AllCheck() { var check = 0; check += NullCheck01(); check += nmck09(); if( check > 0 ) { return false; } return check; } </script> </head> <body> <form method="post" action="list.php" target="list" id="query" name="query"> <input value="17000000" size="10" type="text" name="numberform" onblur="NumbCheck();NullCheck();">から <input type="submit" name="exec" value="検索" onclick="return AllCheck();"> </form> </body> </html>

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

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

  • htmlフォームでチェックボックスの入力漏れを警告

    チェック必須にしたいのですが、出来ません。 以下のようにnameの所に name="kurasu[1]" と入れています。 他の処理もあるので、そのような入れ方をしています。 <input type="checkbox" name="kurasu[1]" id="kurasu1" value="1" /> <input type="checkbox" name="kurasu[5]" id="kurasu5" value="5" /> <input type="checkbox" name="kurasu[8]" id="kurasu8" value="8" /> としてあるので、以下のように if(!document.form.kurasu[1].checked && !document.form.kurasu[5].checked && !document.form.kurasu[8].checked){ として、アラートを出したいのですが、出来ません。 やはり kurasu[1] では出来ないでしょうか? 他のものは以下で処理しています。 <script type="text/javascript"> function check(){ var flag = 0; var errorMes = new Array(); var chkCount = 0; if(!document.form.tel.checked){ // 「電話番号」の記入をチェック flag = 1; errorMes.push("「電話番号」をご記入ください。\n"); } if(flag){ var n = errorMes.length; var errorStr =""; for(i=0;i<n;i++){ errorStr+= errorMes[i]; } window.alert(errorStr); // 記入漏れがあれば警告ダイアログを表示 return false; // 送信を中止 }else{ return true; // 送信を実行 } } </script>

  • 送信フォームの入力内容チェックについて

    送信フォームの入力内容チェックについて 送信フォーム作成の勉強をしています。 「必須項目未記入」と「半角英数以外の文字入力」を同時にチェックする方法をお聞きしたいです。 「必須項目未記入」と「半角英数以外の文字入力」の時に赤字で警告を表示させたいです。 「必須項目未記入」は赤字で警告が表示されるのですが、「半角英数以外の文字入力」の時は赤字で警告が表示されません。。。 素人で説明不足かもしれませんが、助言をいただきたいです。 よろしくお願いいたします。 (URL↓) http://www.photoiku.com/sample/form-sample.php (Javascript↓) <script type="text/javascript"> <!-- function formCheck(){ var flag = 0; if( document . Form1 . InputText1 . value . match ( /[^0-9a-zA-Z_]+/ ) ){ flag = 1; document . getElementById( 'notice-input-text-1' ) . style . display = "block"; }else{ document . getElementById( 'notice-input-text-1' ) . style . display = "none"; } if( document . Form1 . InputText1 . value == "" ){ flag = 1; document . getElementById( 'notice-input-text-1' ) . style . display = "block"; }else{ document . getElementById( 'notice-input-text-1' ) . style . display = "none"; } if( document . Form1 . Textarea1 . value == "" ){ flag = 1; document . getElementById( 'notice-textarea-1' ) . style . display = "block"; }else{ document . getElementById( 'notice-textarea-1' ) . style . display = "none"; } if( flag ){ window . alert( '入力内容に不備があります。' ); return false; }else{ return true; } } // --> </script> (html↓) <form name="Form1" method="post" action="#" onsubmit="return formCheck()"> <p>ID(必須)(半角英数)</p> <p id="notice-input-text-1" style="display: none; color: red;"> 【半角英数で入力されているか確認して下さい】</p> <p><input type="text" name="InputText1"></p> <p>コメント(必須)</p> <p id="notice-textarea-1" style="display: none; color: red;"> 【コメントを入力して下さい】</p> <p><textarea name="Textarea1" rows="5" cols="40"></textarea></p> <p><input type="submit" value="送信"></p> </form> 補足ですが、1つ目のif~elseのブロックと、2つ目のif~elseのブロックを入れ替えてもできませんでした。

専門家に質問してみよう