JavaScriptを使ったメールフォーム作成時の警告メッセージの表示方法

このQ&Aのポイント
  • JavaScriptを使用してメールフォーム作成中の問題について質問があります。
  • メールフォームの送信ボタンを押す際に、名前が空白の場合に警告メッセージを表示するために、JavaScriptの関数を使用しています。
  • 警告メッセージは表示されるのですが、処理が続行されてしまい、メールが送信されてしまいます。なぜreturnを使用しなければならないのか、理解できません。初心者ですので、教えていただけますか?
回答を見る
  • ベストアンサー

Javascriptを勉強中でメールフォームを作っているのですが、

Javascriptを勉強中でメールフォームを作っているのですが、 function check(){ if(document.form1.namae.value==""){ alert("お名前を入力してください。"); return false; } else{ return true; } } で名前が空白の時送信ボタンを押した時に警告メッセージが出るようにしようと思っています。 ボタンには以下のように書いています。 <form name="form1" action="mailto:mail@address" method="post" enctype="text/plain" onsubmit="check()"> そうすると警告は出ますが、処理を続行してメールも送れてしまいます。 教科書を見ると <form name="form1" action="mailto:mail@address" method="post" enctype="text/plain" onsubmit="return check()"> となっているのでそうすると問題ないのですが、なぜreturnを入れないといけないのかよくわかりません。 check()の中ですでにfalseかtrueの値が出ているのでreturnが要らないと思ったのですが・・ 初心者なのでよくわかっていません。 お願いいたします。

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

  • ベストアンサー
  • nine999
  • ベストアンサー率44% (512/1140)
回答No.2

処理を継続する、停止するには、return true / return false が必要です。 true や false はただの値です。しかし、returnは命令です。 check()内にあるreturn命令は、onsubmitの中に値を届けるだけが仕事です。 onsubmit内にあるrerurn命令によって、onsubmitの処理に対して命令を伝えています。そこが、trueやfalseだけでは、それをどういう命令で処理したいのか判らないのです。

その他の回答 (1)

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

何年前の参考書かわかりませんが、いまどきformのactionにmailtoはないと思いますが・・・ さて、onsubmitにreturn を付ける理由は、そういう仕組みになっているからとしか 言いようがありません。 onXXXの戻り値によってその実行を制御する仕組みです。 もうすこし噛み砕いていうと、たとえば常に実行をとめたいなら <form onsubmit="return false">とすることですが、質問者さんの考え方だと <form onsubmit="false">となってしまいます。 これでは、どのタイミングで戻り値をうけていいかわからないですよね。 >check()の中ですでにfalseかtrueの値が出ている これはたんにcheck()関数が戻り値を返しているだけにすぎません。 formのonsubmitが戻り値を返さないと意味がありません。

関連するQ&A

  • javascript フォームについて

    javascriptでフォームを作ったのですが、複数フォームの空白をチェックするにはどのようなプログラムにすればよろしいでしょうか? onsubmit="return chk1(this)でフォーム送信が押されたときにチェックを行おうと考えているのですが そのときのchk()の中身やif文の条件がわからないのです。 どのようにすれば上手くいくでしょうか? 回答よろしくお願いします。 ソースは以下のとおりです。 <script language="javascript"> function send() { document.nform.submit(); document.nform2.submit(); document.nform3.submit(); } function chk1(frm){ if(frm.elements["txt1"].value==""){ alert("解答欄に空白があります"); /* FALSEを返してフォームは送信しない */ return false; }else{ /* TRUEを返してフォーム送信 */ return true; } } </script> <form name="nform" method="POST" action="mailto:webmaster@a.com?subject=問い合せ" enctype="text/plain"> <p>問1</p> <p> (1)<input type="text" name="kaitouran11" size="20"> (2)<input type="text" name="kaitouran12" size="20"> (3)<input type="text" name="kaitouran13" size="20"> (4)<input type="text" name="kaitouran14" size="20"> </p> </form> <form name="nform2" method="POST" action="mailto:webmaster@leposystems.com?subject=問い合せ" enctype="text/plain"> <p>問2</p> <p> (1)<input type="text" name="kaitouran21" size="20"> (2)<input type="text" name="kaitouran22" size="20"> (3)<input type="text" name="kaitouran23" size="20"> (4)<input type="text" name="kaitouran24" size="20"> </p> </form> <form name="nform3" method="POST" action="mailto:webmaster@leposystems.com?subject=問い合せ" enctype="text/plain"> <p>問3</p> <p> (1)<input type="text" name="kaitouran31" size="20"> (2)<input type="text" name="kaitouran32" size="20"> (3)<input type="text" name="kaitouran33" size="20"> (4)<input type="text" name="kaitouran34" size="20"> </p> </form> <input type="button" value="送信" onClick="send()" onsubmit="return chk1(this)">

  • onSubmit=の後ろは複数可能でしょうか?

    <SCRIPT language=JavaScript><!-- function check() { ・ ・ ・ <FORM action="mailto:××@××.com method="post" enctype="text/plain" name="myform" onSubmit="return Check()"> で未記入のものを確認してアラートを出すようにしています。 この機能にフォーム送信後、指定ページへ移動するようにしたいのですが、それは 可能ですか?となると別ページへの移動は function Start(){ setTimeout('window.location.href="他のページのファイル名.htm"',5000); } // --> </SCRIPT> ・ ・ ・ <FORM action="mailto:××@××" method="post" enctype="text/plain" name="myform" onSubmit="Start()"> になると思うのですが、onSubmit=の後に"return Check()"と "Start()"というのは両方使えるものなのでしょうか?;でつないでも正しく動いてくれません。ページ移動が無理なら、"return Check()"を使う、 sent=0 function Check(){ if(sent==0){ sent=1; return true; }else{ if(confirm("1度送信された可能性があります。")){ return true; }else{ return false; } } } かなと思ったのですが、これだと未記入の場合のアラートが出なくなります。 もう行き詰まってしまいました・・。 解決策をご存知の方、ぜひお願いします!

  • フォームの送信について

    <form method="post" action="mailto":メールアドレスenctype="text/plain">にて送信すると、フォームの中のデータが化ける、または表示されないのですが、何が原因でしょうか?

    • ベストアンサー
    • HTML
  • outlookでのフォーム送信ができません

    どなたか教えていただけませんか? 現在、mailtoを使用してのフォーム送信ページを作成しているのですが どうも、windows XP の Internet Explorer6 の OutlookExpress での送信ができません。 Beckyなどでは普通に送信できるのですが、 outlookでは、ただメーラーが立ち上がるだけで フォームの内容をもう一度、記入しなくてはいけないという2度手間な状況です。 何か、HTML記述に加えなければいけないのでしょうか? 現状のformタグはこのようになっております。 <form name="form1" method="post" action="mailto:***@***.co.jp" enctype="text/plain" onSubmit="return chk()"> よろしくお願いします。

  • ホームページからメールを受け取る方法

    ホームページを作成しています。 アンケートなどをメールで転送してもらいたいのですが、内容がメーラーに転送されません。何が問題なのでしょうか? ちなみに <FORM name="ans" action="mailto:メールアドレス?Subject=回答" enctype="text/plain" onsubmit=" " method="POST"> としています。 何か、コンピュータの環境の違いで、ansが引き継げない原因があるのでしょうか?

  • フォーム送信後、ウィンドウを閉じたい

    フォームで入力した内容をメールで送信後、 そのウィンドウを閉じたいのです。 <form action="mailto:メールアドレス" method="POST" enctype="text/plain" name="mail"> とフォームアクションを記述しています。 このウィンドウは、あるページから window.openによって開かれたウィンドウです。

    • ベストアンサー
    • HTML
  • 投稿フォームについて

    <form action="mailto:********" method="post" enctype="text/plain">・・・・で始まる投稿フォームを作りました。 ですが、PCによって送信を押して投稿フォームの形式で遅れるものと送信を押すとメッセージの作成がでてきてしまうものがあります。 どういった理由なのか分かる方がいましたら教えてください。

  • メールフォームの文字化けについて

    <form method="POST" action="mailto:*****@****.com" enctype="text/plain">のようなメールフォームを設置したのですが、送ろうとしたら文字化けされるそうです。 調べてみたらcgiとかを使った方が良さそうですが、その前に念のために質問します。 1.mailto:を使って文字化けするのは利用者環境によって文字化けすることもあるという解釈になるのでしょうか。html側ではどうしようもないのでしょうか。 2.cgiを使った場合、文字化けは解消されるのでしょうか。 すみませんが、教えてください。宜しくお願い致します。

  • メールフォームの文字化け

    <form method="POST" action="mailto:*****@****.com" enctype="text/plain">のようなメールフォームを設置したのですが、送ろうとしたら文字化けされるそうです。 調べてみたらcgiとかを使った方が良さそうですが、その前に念のために質問します。 1.mailto:を使って文字化けするのは利用者環境によって文字化けすることもあるという解釈になるのでしょうか。html側ではどうしようもないのでしょうか。 2.cgiを使った場合、文字化けは解消されるのでしょうか。 すみませんが、教えてください。宜しくお願い致します。

  • JavaScriptでメールフォーム

    サイトでメールフォームをCGIを使わずに、JavaScriptで作成した時の話なのですが、 例えば、 <form name="mail" action="mailto:aaa@bbb.com" method="post" enctype="text/plain"> 名前<br> <input name="name"><br> 送信内容<br> <textarea style="WIDTH: 164px; HEIGHT: 50px" name="body"></textarea><br> <input style="WIDTH: 74px; HEIGHT: 21px" type="submit" size="37" value="送信"></form> ↑のような一般型のフォームは出来るのですが、 メールの送信先をメール送信者に指定させてそのアドレスにメールを送信するようにするにはどうしたら良いのでしょうか? すみませんが御願いします・・・

専門家に質問してみよう