フォームメールの入力チェック方法についての質問

このQ&Aのポイント
  • HTML側にJavaScriptで入力チェックを行わず、cgi側で入力チェックをする方法についての質問です。
  • name属性の値の前にアンダーバーを付けることで、メールアドレスの入力チェックを実現することができます。
  • ただし、select要素の場合はアンダーバーを付けても入力チェックがかからないため、別の方法を探しています。
回答を見る
  • ベストアンサー

フォームメールの入力チェック

HTML側にJavaScriptでチェックを行うのではなく、 nameの値の前にアンダーバーを付けて、cgi側で入力チェックをいたいと思っています。 <input type="text" name="_email">としておけば、 メールアドレスが入力されていなければエラーになります。 これをselect の場合<select name="_time">としてもチェックがかからないのは何故でしょうか? もちろん、option value のdefaultはblankにしてあります。ここで、いづれかのoption value を選ばないと 入力チェックがかかるようにしたいのです。 初歩的な質問で申し訳ありませんが、よろしくお願い致します。

  • HTML
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

<option value> という書き方ではブラウザによって解釈が微妙に違うし、特にIEの場合はoptionの表示内容の全角スペースがvalueの値として採用されるようです。 (valueが省略された場合は表示内容を値として送信する仕様です。) つまり現状では value=" "(←全角スペース)と書いたような状態になっています。 値として空である事を示すには value="" とすれば大丈夫だと思います。 radioボタンの場合はまた少し違います。 最初からどれか一つにチェックが入った状態、 checked のあるinput が存在しないとCGIを改造しない限り未チェックのチェックは出来ないと思います。 どうしても最初はどこにもチェックが入っていない状態にしたければ次のようにするとよいかも 例) <input type="radio" value="" name="_sex" checked style="display:none;"> ↑値が空、checked 指定のinputを非表示で配置 男<input type="radio" value="female" name="_sex"> 女<input type="radio" value="male" name="_sex">

T_kumi
質問者

お礼

ありがとうございました!! 早速試しましたら、見事解決しました。 感謝致します。 やはりHTML側の問題だったのですね。 知識不足でした 勉強になりました。 本当にありがとうございました。

その他の回答 (1)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

blankとは具体的にどういう状態でしょうか? とりあえず一度formのメソッドをgetにしてみると、 <form ~ method="post">→<form ~ method="get"> 送信した後にブラウザのURL欄でどうのように内容が渡されているか確認できると思うので 希望通りの形式で渡っているか確認してみては? http://~ mailform.cgi?_time=&_email みたいになっていればたぶんOK(CGI側の問題?)、 そうでなくて _time=?? と、何か値が渡っていればhtmlの書き方に問題があるのだと思います。

T_kumi
質問者

補足

blank とは、HTMLのformのタグに   第1希望時刻 <select name="_time"> <option value> </option> <option value="11:00~">11:00~</option> <option value="12:00~">12:00~</option> <option value="13:00~">13:00~</option> </select> として、▼をクリックする前は枠内が空白になっているという意味です。 いろいろ試してみましたが、 <input type="text" name="_name"size="35" tabindex="1"> <input type="text" name="_email" size="60" tabindex="6"> <textarea name="_comment" cols="80" rows="6" wrap=soft tabindex="7"></textarea> などは、入力チェックができますが、やはり"select"と同じようにvalue のある"radio"ボタンなどはダメでした。 ご指摘のように、"get"でも送信してブラウザのURL欄で見たのですが、入力した文字以外は文字化けしていました。 cgiは設置できる程度でプログラムはわかりません。 ちなみに使用しているのは、フリーで配布されている postmail.cgi です。

関連するQ&A

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

    前任者が制作したメールフォームの入力チェックが動かないということで、 修正をしてみたのですが、思うように動いてくれません。 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に関してはあまり知識がなく、 手さぐりでこんな感じかな?と思っていろいろ試したり、調べてみましたが、 いい方法が思いつきませんでした。 詳しい方、ぜひご回答をお願いいたします。

  • メールフォームでプルダウンの内容だけ送られてこない

    HTMLファイルでデザインができるメールフォームのcgiで、 名前とEメールアドレスは送られてくるのですが プルダウンの内容だけ、送られてこないんです。 ちなみに携帯サイト用です。 プルダウンの入れ方がおかしいんだと思うのですが 何がいけないのでしょうか? --------------------------------- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>フォームメール</title> </head> <body text="#000000" bgcolor="#FFFFFF" link="#0000FF" vlink="#0000FF"> <center>フォームメール</center> <hr> <form action="./mail.cgi" method="${INFO_METHOD}"> <input type="hidden" name="system_mode" value="preview"> <input type="hidden" name="need_input_message" value="1"> 名前<br> <input type="text" name="system_name" value=""><br> Eメール<br> <input type="text" name="system_mail" value=""><br> テスト<br> <select name="test01"> <option value="" selected="selected">選択してください</option> <option value="テスト1">テスト1</option> <option value="テスト2">テスト2</option> <option value="テスト3">テスト3</option> <option value="テスト4">テスト4</option> </select> テスト<br> <select name="test02"> <option value="" selected="selected">選択してください</option> <option value="テスト1">テスト1</option> <option value="テスト2">テスト2</option> <option value="テスト3">テスト3</option> <option value="テスト4">テスト4</option> </select> <br> <input type="checkbox" name="system_copy" value="on" checked> 送信者にコピーを送る<br> <br> <input type="submit" value="確認画面へ"> </form> <hr> ▲<a href="${INFO_BACK}">戻る</a> <hr> </body> </html> --------------------------------------- 今はこうなってます。 何か間違っている箇所、足りない箇所がありましたら ぜひ教えてください。 よろしくお願い致します。

    • ベストアンサー
    • HTML
  • アンケート集計フォーム、チェックボックスでのデータ取得

    フォームから、テキストボックスと、プルダウンを使用してデータを取得するcgiに、 チェックボックスを加えようと思うのですが、うまくいきません。 どなたかご教授お願い致します。 入力が適切ならば、hiddenで書き込み 不適切ならばフォームを表示。 テキスト入力の場合 # email if ($e_email){ $t_email = "<input type=\"text\" size=\"20\""; }else{ $t_email = "$email<input type=\"hidden\""; } $t_email .= "name=\"email\" value=\"$email\">\n"; プルダウンの場合 # way if ($e_way){ $t_way = "<select size=\"1\" name=\"way\">\n"; $t_way .= "<option selected>連絡方法を選択して下さい\n"; $t_way .= "<option>E-mail\n"; $t_way .= "<option>電話\n"; $t_way .= "</select>\n"; }else{ $t_way = "$way<input type=\"hidden\" name=\"way\" value=\"$way\">\n"; チェックボックスでの分岐、value属性のある場合はどうなるのでしょうか?

    • ベストアンサー
    • CGI
  • JavaScriptで入力チェック

    ////サンプル//// <p><input type="text" value="" name="box_1" /></p> <p><input type="text" value="" name="box_2" /></p> <p><input type="text" value="" name="box_3" /></p> <p><input type="text" value="" name="box_4" /></p> Javascriptで入力チェックをして 入力がされていたらpタグとinputタグの間に「○」を表示させたいのですが どのように実装したら良いでしょうか? ・inputタグは4つだけではなくたくさんあります ・DBを使っているのでページを更新しても○が消えないようにしたいです よろしくお願いします!

  • 入力チェック

    下記の入力チェックのときに「【選択して下さい】」という文字列なら「だめ」と表示したいのですが、項目が多いのでヘッダー部分でdocument.kansou.yubin.valueのようのようにテキストボックスの名称を1個ずつ指定せずに一括でできないでしょうか。イメージとしてはdocument.kansou.form(i).valueみたいな?感じのまとめ処理がしたいのですが。 現在→yubinが「【選択して下さい】」ならダメ jusho1が「【選択して下さい】」ならダメ ・・・・ やりたいこと→どれかのテキストボックスが「【選択して下さい】なら「だめ」 <HTML> <HEAD> <TITLE>入力チェック</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- function submitCheck(){ if (document.kansou.yubin.value=="【選択して下さい】"){ alert("だめ"); return false; } else return true; } //--> </SCRIPT> </HEAD> <BODY> <FORM NAME="kansou" ACTION="test.cgi" METHOD="post" ENCTYPE="text/plain" onSubmit="return submitCheck()"> <SELECT NAME="yubin">【選択して下さい】 <OPTION SELECTED>ほげほげ</OPTION></SELECT> <SELECT NAME="jusho">【選択して下さい】 <OPTION SELECTED>ほげほげ</OPTION></SELECT> <SELECT NAME="jusho2">【選択して下さい】 <OPTION SELECTED>ほげほげ</OPTION></SELECT> <INPUT TYPE="submit" VALUE="送 信" onClick="document.kansou.name.value=''"> </CENTER> </FORM> </BODY> </HTML>

  • フォームの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値を配列にする必要があります。 解決方法がわかる方がおられましたらご教授ください。 以上よろしくお願いいたします。

  • メールフォームでのラジオボタンが使えない

    お世話になります。回答が得られず、再質問になります。 関西電力のインターネットサービス「eo光」に契約しており、同社のサービスでメールフォームを提供しているので、これを利用して、友人に連絡先を書き込んでもらうメールフォームを作成中ですが、全くの素人なのでどうにもうまく動作しない部分があります。 下記の記述をしてHPを立ち上げているのですが、ラジオボタンもしくはチェックボックスの部分がメールの中に反映されません。(例ではチェックボックスを作ろうとしています。) その他の項目についてはなんとか受け取ることができるのですが、チェックボックスをうまく動作させる方法を教えていただけないでしょうか。よろしくお願いいたします。 <FORM ACTION="http://cgi.eonet.ne.jp/cgi-bin/mail.cgi?user=tokumei" METHOD="POST"> <INPUT TYPE="hidden" NAME="mail_to" VALUE="tokumei@***et.ne.jp"> <INPUT TYPE="hidden" NAME="from" VALUE="tokumei@***et.ne.jp"> <INPUT TYPE="hidden" NAME="defsubject" VALUE="blank"> <INPUT TYPE="hidden" NAME="url" VALUE="http://www.eonet.ne.jp/~私のID/thanks.html"> 下記のフォームに入力して送信ボタンを押してください。<BR> <BR> お名前(漢字):<BR> <INPUT TYPE="text" NAME="name" SIZE="50"><BR> お名前(かな):<BR> <INPUT TYPE="text" NAME="message" SIZE="50"><BR> お名前(旧姓):<BR> <INPUT TYPE="text" NAME="message" SIZE="50"><BR> 電話番号:<BR> <INPUT TYPE="text" NAME="message" SIZE="50"><BR> E-mailアドレス(PCからのメールを受信できるアドレスを指定してください。):<BR> <INPUT TYPE="text" NAME="email" SIZE="50"><BR> メッセージ:<BR> <TEXTAREA NAME="message" ROWS="5" COLS="60"></TEXTAREA><BR> <br> 同窓会への出欠についてご意向を選択してください。<BR> <select size="1" name="message"> <option value="■意向:絶対行く">絶対行く</option> <option value="■意向:予定が合えば行く">予定が合えば行く</option> <option value="■意向:あまり行きたくない">あまり行きたくない</option> <option value="■意向:行かない">行かない</option> </option> </select><br><br> ■同窓会名簿で公開する項目を選択してください。 <INPUT type="checkbox" name="item1"value="氏名">氏名 <INPUT type="checkbox" name="item2"value="住所">住所 <INPUT type="checkbox" name="item3"value="電話番号">電話番号 <INPUT type="checkbox" name="item4"value="メールアドレス">メールアドレス <br> <INPUT TYPE="submit" VALUE="送 信"> <INPUT TYPE="reset" VALUE="リセット"> </FORM> 投稿日時 - 2012-11-23 23:46:28通報する

  • 選択肢によって入力必須が変わるフォームの入力チェック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 であれば・・・、という処理を追加すればよいのだと 思いますが、書き方が分からず困っています。 どうかよろしくお願いします。

  • フォームで複数の関数を1つにまとめる方法

    フォームに関して、必須項目が未入力・未選択の場合に警告する JavaScriptを記述したいのですが、 複数のJavaScriptを1つにまとめるにはどうしたら良いのでしょうか。 具体的には、 【1】テキストフィールド未入力の場合に警告する 【2】メールアドレスが間違いor未入力の場合に警告する 【3】セレクトボックスが未選択の場合に警告する という3つを同じページで同時に設定する方法が分かりません。 記述した内容は下記の通りです。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 【1】 <script type="text/javascript"> <!-- function check(){ var flag = 0; // 設定開始(必須にする項目を設定してください) if(document.form1.field1.value == ""){ // 「お名前」の入力をチェック flag = 1; } else if(document.form1.field2.value == ""){ // 「ご住所」の入力をチェック flag = 1; // 設定終了 if(flag){ window.alert('必須項目に未入力がありました'); // 入力漏れがあれば警告ダイアログを表示 return false; // 送信を中止 } else{ return true; // 送信を実行 } } // --> </script> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 【2】 <script type="text/javascript"> <!-- function check(){ var flag = 0; // 設定開始(チェックする項目を設定してください) if(!document.form1.email.value.match(/.+@.+\..+/)){ flag = 1; } // 設定終了 if(flag){ window.alert('メールアドレスが正しくありません'); // メールアドレス以外が入力された場合は警告ダイアログを表示 return false; // 送信を中止 } else{ return true; // 送信を実行 } } // --> </script> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 【3】 <script type="text/javascript"> <!-- function check(){ var flag = 0; // 設定開始(チェックする項目を設定してください) if(document.form1.select1.options[document.form1.select1.selectedIndex].value == ""){// 「地域」の入力をチェック flag = 1; } else if(document.form1.select2.options[document.form1.select2.selectedIndex].value == ""){ // 「生年月」の入力をチェック flag = 1; } else if(document.form1.select3.options[document.form1.select3.selectedIndex].value == ""){ // 「生年日」の入力をチェック flag = 1; } // 設定終了 if(flag){ window.alert('選択されていません'); // 選択されていない場合は警告ダイアログを表示 return false; // 送信を中止 } else{ return true; // 送信を実行 } } // --> </script> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 【本文】 <form name="form1" onSubmit="return check()"> ■お名前:<input type="text" name="field1" size="30" style="ime-mode:active;"> ■メールアドレス:<input type="text" name="email" size="30" style="ime-mode:inactive;"> ■地域: <select name="select1"> <option value="北海道">北海道</option> <option value="青森県">青森県</option> ・ ・ </select> ■ご住所<input type="text" name="field3" size="60" style="ime-mode:active;"> ■生年月日 <select name="select2"> <option>1</option> <option>2</option> ・ ・ </select>月 <select name="select3"> <option>1</option> <option>2</option> ・ ・ </select>日 </form> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ JavaScriptの記述経験が殆ど無いため、 出来る限り詳しくご教示願いたく、 よろしくお願い致します!

  • フォームメーラーの記述メールアドレスの入力欄を送信者の携帯メールアドレスにする

    レンタルcgiフォームメーラーで顧客から社にフォームを送ってもらうサイトを制作中です。 送信元(顧客の)メールアドレスの記入について疑問です。 <input type="text" name="mail"> とすると何の問題も無くフォーム受信でき、そのまま顧客側に返信できます。 しかし携帯アドレス用に下記のようなものを作ろうとしています。 <INPUT TYPE="text" NAME="email_account"> <SELECT name="email_domain"> <option value="@docomo.ne.jp">@docomo.ne.jp <option value="@ezweb.ne.jp">@ezweb.ne.jp <option value="@t.vodafone.ne.jp">@t.vodafone.ne.jp …………以下続く とすると、受信したフォームは 「email_account」「email_domain」 が分かれてしまい、アドレスリンクになっていない状態です。 そのままではメールアドレスとして認識していないようでそのまま返信も出来ません。 NAME="email_account"を NAME="mail" とするともちろん「正しくメールアドレスを記入せよ」と出ます。 「email_account」「email_domain」と分けたアドレスを送信者のメールアドレスとして送信させるにはどうしたら良いでしょう。