- ベストアンサー
メールフォームの入力不備をアラートで知らせる順序は?
ホームページを作っています。 メールフォームもあるのですが、入力不備があったときアラートで知らせるようにJavascriptで書きました。名前や住所などはちゃんとアラートがでるのですが、メール入力の項目だけはうまくいきません。単体で試すとうまくいくのですが、他の項目と組み合わせると全部のアラートがでないで送信となるか、メールの項目が出ないで送信となります。 if (document.Formp.mail.value.match(/\w+@\w+/)) return true; alert("正しいメールアドレスを入力してください"); return false; をどの位置に書けばうまくいくのでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 例の問題の箇所 if (document.Formp.mail.value.match(/\w+@\w+/)) return true; (今は「return true;」が「{」になってるはず・・・) を if (!document.Formp.mail.value.match(/\w+[@]\w+/)){ に変えてみてください。 まとめてひとつ・・・云々の方も気になります・・・。 (^^ゞ
その他の回答 (5)
- flowermaze
- ベストアンサー率56% (159/282)
#4です。何度もすみません。 } がひとつ足りませんでしたので、</script>の前にもうひとつ}を足してください。
お礼
flowermazeさん!こんにちわ! できました! (時間があったら見てみてください!www.w-b.jp/mill/yoyaku3.html) すごいです!本当に出来ちゃいました!! まだ改良点はあるような気もしますが、ここまで出来たことがすごいです! 本当に有難うございました!! また、機会があれば色々と教えてくださいね!
補足
すごいです!flowermazeさん! アラートを一緒に出すことが出来るんですね! 感激です! やってみます! ありがとうございます! アップしたらまたカキコします!
- flowermaze
- ベストアンサー率56% (159/282)
#4です。一部ミスがありましたので訂正です。 【誤】 if (document.Formp.mail.value.match(/\w+@\w+/)) { AlertText = AlertText + "正しいメールアドレスを入力してください\n"; } 【正】 if (! document.Formp.mail.value.match(/\w+@\w+/)) { AlertText = AlertText + "正しいメールアドレスを入力してください\n"; }
- flowermaze
- ベストアンサー率56% (159/282)
まとめてアラートを出したいのなら、こんな方法も。 function FormCheck(){ AlertText = ""; /* 不備チェック */ if (document.Formp.name.value == ""){ AlertText = "名前が入力されていません\n"; } if (document.Formp.address.value == ""){ AlertText = AlertText + "住所が入力されていません\n"; } if (document.Formp.mail.value.match(/\w+@\w+/)) { AlertText = AlertText + "正しいメールアドレスを入力してください\n"; } if( c1 == false && c2 == false){ AlertText = AlertText + "性別の項目がチェックされていません\n"; } if( c3 == false && c4 == false){ AlertText = AlertText + "駐車場の項目がチェックされていません\n"; } if (document.Formp.plan.value == "お選びください"){ AlertText = AlertText + "部屋タイプが入力されていません\n"; } /* 不備があったらアラート */ if (AlertText) { alert (AlertText); return false; } else { return true; } </script> ひとつずつ不備をチェックして、不備があったらアラートの文章をAlertTextに代入。最期にAlertTextをチェックして、空であればそのまま送信、なにか入っていればその文章をアラートとして出します。
- taka451213
- ベストアンサー率47% (436/922)
こんにちは。 このソースは実際のものですよね? <script language="JavaScript">から数えて、19行目、 if (document.Formp.mail.value.match(/\w+@\w+/)) return true; を if (document.Formp.mail.value.match(/\w+@\w+/)){ としてください。 35行目の「else」は不要です。 >>アラート画面を全部まとめて一つにするというのは やりたい事がイマイチわからないのですが、具体的にはどういう意味ですか? (^^ゞ
補足
taka451213さん、本当にありがとうございます。 先ほどのソースはダミーでした。本当のはもっと大きいので簡略化したのです。でも、ご指摘のあったように直してみたのですがやっぱりうまくいきません…。直したものをアップしてみました。チェックしてみてくださいませんか? www.w-b.jp/mill/yoyaku2.html
- taka451213
- ベストアンサー率47% (436/922)
こんにちは。 >>どの位置に書けばうまくいくのでしょうか? 全体がないのでわかりません・・・。 JavaScriptの部分を載せてください。 (^^ゞ
補足
taka451213さん、こんにちわ。ありがとうございます! 以下のように書いているのですが、メールの記述を取ると全部のアラートが出るのですが、メールのアラート記述を入れるとアラートが一つも出なくなってしまいます。入れる位置を一番上や下やいろいろやってみましたがダメなんです…。 どうすればいいのでしょう??? <script language="JavaScript"> var c1=false,c2=false; function FormClear(){ c1=false,c2=false; } var c3=false,c4=false; function FormClear(){ c3=false,c4=false; } function FormCheck(){ if (document.Formp.name.value == ""){ alert("名前が入力されていません"); return false; } if (document.Formp.address.value == ""){ alert("住所が入力されていません"); return false; } if (document.Formp.mail.value.match(/\w+@\w+/)) return true; alert("正しいメールアドレスを入力してください"); return false; } if( c1 == false && c2 == false){ alert("性別の項目がチェックされていません"); return false; } if( c3 == false && c4 == false){ alert("駐車場の項目がチェックされていません"); return false; } if (document.Formp.plan.value == "お選びください"){ alert("部屋タイプが入力されていません"); return false; } else return true } </script> ちなみに、アラート画面を全部まとめて一つにするというのはCGIを使わないと無理なんですよね? 一応、CGIを使わずJavascriptで…と思っているのですが…。よろしくお願いいたします。
お礼
taka451213さん、こんにちわ。 先日は色々と解答いただき有難うございました。 アラートをまとめるのがまだできていないので進行中ですが、第1段階はtaka451213さんにご教授いただいたおかげで何とかなりました。 本当に有難うございました。 また機会があれば色々教えてくださいね! では!
補足
できました!! taka451213さん!! 本当にありがとうございます!すご~い! 昨日からかかりっきりでも全然出来なかったんです。うれしいです。ありがとうございました! あと、まとめて一つの方は、きっと無理だと思うんですけれども、このフォームの必須項目に記入もれがあれば全部アラートを出すようにしたのです。 でも、それでは記入もれが何カ所もあったときには、1箇所ずつのアラートしか出ないので、うるさいかな~と思ったんです。何度も戻ってやり直さなければならないので一回でまとめてアラートが出ればいいかな~と思ったもんですから…。素人の浅知恵です。実際にこのホームページも有効なものかどうか。セキュリティのことなどを考えるとCGIを設置した方が良いみたいですが、まだそこまで考えていないのです。 でも、まずはここまで出来て本当に良かったです。 本当に有難うございました!^^