• ベストアンサー

必須項目のチェック

CGI内で必須項目のチェックをしたいと思っています。 ラジオボタン(name=電話)が(value=1)を選択された時、 テキストエリア(name=電話1、name=電話2、name=電話3) がすべて入力されていないとエラーが出るチェックをかけたいと思っています。 入力した後にでる確認画面で、nameを項目名として出しているのでnameを日本語につける必要がありました。 nameの指定を英字にしても良いのですが、チェックをかけた後、日本語に変換をかける方法がわからないのです。 お力をお貸しください!よろしくお願いします。

  • Perl
  • 回答数5
  • ありがとう数3

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.5

> しかし、他のnameは日本語なので、置きかえる必要がないのですが ええとですね、そもそもnameに日本語を指定すること自体、普通はしないんですよ。日本語は何かと面倒が多いので、通常は半角英数を使用します。 No.2の補足も読みましたが、デコードルーチンがちょっと特殊なんですね。私やyuizuianさんが言っている「%FORMにデータが入っている」というのは、次のような一般的なデコードルーチンを使用している場合の話です。 foreach $pair (@pairs) {   my ($key,$val) = split(/=/,$pair);   $val =~ tr/+/ /;   $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;   $val =~ s/</</g;    # ここから下は、必要に応じて書く   $val =~ s/>/>/g;   $val =~ s/\"/"/g;   $FORM{$key} = $val; } これなら、HTML内の <INPUT type="text" name="tel1"> の値は、$FORM{tel1} とすれば読み出せます。(No.1の私の回答も、No.2のyuizuianさんの回答も、これを前提としているのです。) nameとvalueを別の配列に入れてしまっては、欲しいデータをすぐに取り出すことができないですよね。(何番目にどのデータが入っているのか確定しているなら別ですが。)このまま複雑なプログラムを書くのは大変苦しいと思います。 デコードルーチンの差し替えと、name値を半角英数に統一するのが完成への近道だと思いますよ?

milk_tea22
質問者

お礼

何度もお答えいただいて、ありがとうございました。 とても勉強になり感謝いたしております。 設置もうまくいきました。

その他の回答 (4)

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.4

補足読みました。 なるほど、nameとvalueを、それぞれ別の配列に入れているのですね。 でしたら、次のようにされてはどうでしょうか。 my %LABEL = (caller=>'電話', tel1=>'電話1', tel2=>'電話2', tel3=>'電話3'); としておいて、表示箇所を <td width=\"150\" nowrap>$LABEL{$NAME[$_]}</td> # nameに対する表示用文字列をハッシュに入れておくという方法です。 # 他にも表示されるname要素があったら、それに対する表示用文字列を設定して下さい。

milk_tea22
質問者

補足

補足を読んでいただきありがとうございます。 説明が足りませんで、申し訳ないです。 leaz024さんがおっしゃるようにしたら、書き換えに成功しました。 しかし、他のnameは日本語なので、置きかえる必要がないのですが、 my %LABEL = ・・・・・ のように書き加えていかなければいけないのでしょうか?

  • yuizuian
  • ベストアンサー率42% (103/245)
回答No.3

下の投稿インデントが消えてしまっていますね。 読みにくくて申し訳ありません。

milk_tea22
質問者

お礼

ありがとうございます。 設置もうまくいき、一安心です。

  • yuizuian
  • ベストアンサー率42% (103/245)
回答No.2

ハッシュ%FORMにデータが格納されていると仮定して… if ($FORM{'電話'} == 1) { if ($FORM{'電話1'} eq "" || $FORM{'電話2'} eq "" || $FORM{'電話3'} eq "") { エラー処理 } } という感じでどうでしょう?

milk_tea22
質問者

補足

お答えありがとうございます。 >ハッシュ%FORMにデータが格納されていると仮定 $in{$FORM} = $value;と記述すれば良いのでしょうか? 記入しているのですが、チェックにひっかからないのです。 チェック前に下記のように書いてある所があります。 ここでデータを格納しているのですよね? ______________ foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*name,'sjis'); &jcode'convert(*value,'sjis'); } else { $name =~ s/</&lt;/g; $name =~ s/>/&gt;/g; $name =~ s/"/&quot;/g; $name =~ s/\t//g; $name =~ s/=/&eq;/g; $value =~ s/</&lt;/g; $value =~ s/>/&gt;/g; $value =~ s/"/&quot;/g; $value =~ s/\t//g; $value =~ s/=/&eq;/g; push(@NAME,$name); push(@VALUE,$value); ↓のエラーチェックにつづく ちなみに、他のチェック項目はこうなっています。 関係ないかもしれませんが… ↓ foreach $buff (@CHECK) {  if ($buff eq $name) {    if ($name eq '名前') {     if ($value eq '') { &error(bad_01); }     }    elsif ($name eq '住所') {     if ($value eq '') { &error(bad_01); }     }  } } 長々とすいません。 宜しくお願いいたします。

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.1

直接書いてはいけないのでしょうか? 【前提】 ・ラジオボタン:name=caller ・電話1:name=tel1  以降、2,3 ・フォーム内容を受け取るハッシュ:%FORM 【ソース】 print <<_HTML_; 電話1:$FORM{tel1}<BR> 電話2:$FORM{tel2}<BR> 電話3:$FORM{tel3}<BR> _HTML_ # そもそも「nameを項目名として出している」というのが、よく分かりませんが。。 何か聞きたいことと違っていたら、補足下さい。

milk_tea22
質問者

補足

お答え頂きありがとうございます。 確認画面のHTMLソースを下記のようにしているので 電話だけ直接書くようにする方法がわからないのです。 HTML_WRITE foreach (0..$count-2) { if ($VALUE[$_] ne '') { print "<tr><input type=hidden name=\"$NAME[$_]\" value=\"$VALUE[$_]\"><td width=\"150\" nowrap>$NAME[$_]</td>\n"; $VALUE[$_] =~ s/\r/<br>/g; print "<td>$VALUE[$_]</td></tr>\n"; } } print <<HTML_WRITE; 分かりづらい書き方ですみません。

関連するQ&A

  • CGI(Perl)内での必須項目チェック

    CGI(Perl)内で必須項目のチェックを行うところで 書き方が分からず困っています。 フォームページHTMLファイルにラジオボタンで選択ボタンが2つとテキストエリアが3つあります。 ラジオボタンのnameは、携帯電話。 valueの1つ目は "1"、2つ目は ""(空白)。 テキストエリアの 1つ目のnameは、"携帯1"。2つ目のnameは、"携帯2"。3つ目のnameは、"携帯3"。 ラジオボタンのvalueが"1"の場合は、テキストエリア全てに項目が入っていないとエラーメッセージが出るチェックを作りたいのです。 説明が分かりづらいかもしれないのですが、お力をお貸しください。 宜しくお願いします。

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

  • ラジオボタンでチェックした項目を必須にし、javascriptでアラートを出したい

    こんにちは・・・。 前回はphpで同じ質問をしたのですが、今回はjavascriptを使わなくてはなりません・・・OTL 重複質問のようで申し訳ないのですが、 連絡先方法【必須】をラジオボタンで選択した際、選択した項目(テキストエリア)を必須にしたいのです。 連絡先方法を必須にするやり方はわかりますが、それ以降がわかりません。。 どなたかご教授願います!! <input type="radio" name="renraku" value="TEL">TEL   <input type="radio" name="renraku" value="FAX">FAX   <input type="radio" name="renraku" value="E-Mail">E-Mail function CheckInput(){ /*----- check -----*/ flag = 0; for ( i = 0 ; i < document.form_1.renraku.length ; i++){ if (document.form_1.renraku[i].checked){ flag = 1; } } if (!flag){ alert('御希望連絡方法を選択して下さい'); return false; } } この続きを教えて下さい・・・お願い致します!

  • ジャバスクリプト 入力項目チェック

    アンケートフォームを作成していて、入力必須項目とそうでないのがあります(そうでないものはすべてテキストエリア)。 必須項目は ・テキスト入力 ・4つのラジオボタンの中から1つを選ぶ ・プルダウンから1つを選ぶ があります。 テキスト入力では、電話番号、郵便番号、メールアドレス、の正規入力(半角英数で、@抜けチェック)を促したいのです(必須項目で未入力、未選択、誤表記があった場合、エラー画面が出るように)。 なかななかこれらの条件を満たしたジャバスクリプトソースを公開しているところがなくて困っています。 独学するにはちと時間がなく、あちこちのサイトをあたっているのですが、部分的には成功してもなかなか全部スッキリ決まりません。 どなたかお教えくださる方、よろしくお願いします。

  • PHPでラジオボタンでチェックした項目を必須にしたい

    こんにちわ、どなたかご教授願います! ラジオボタンで例えば 連絡方法 1.TEL 2.FAX  3.MAIL とあり、1を選んだら、TELのテキストエリアを必須に 2を選んだら、FAXのテキストエリアを必須に 3を選んだら、MAILのテキストエリアを必須に するようにしたいのですが、 どのように記述すれば宜しいのでしょうか? 教えて下さい(泣)

    • ベストアンサー
    • PHP
  • 最も多くチェックされた項目を調べる

    javascriptで最も多くチェックされた項目を調べて それぞれのページに分岐するようにしたいです。 以下はサンプル <form onSubmit="return color(this)"> 好きな動物は? <label><input type="radio" name="q1" value="A">うさぎ</label> <label><input type="radio" name="q1" value="B">カメ</label> <label><input type="radio" name="q1" value="C">イルカ</label> <label><input type="radio" name="q1" value="D">くま</label> 好きな場所は? <label><input type="radio" name="q2" value="A">空</label> <label><input type="radio" name="q2" value="B">森</label> <label><input type="radio" name="q2" value="C">海</label> <label><input type="radio" name="q2" value="D">畑</label> 好きな食べ物は? <label><input type="radio" name="q3" value="A">豆腐</label> <label><input type="radio" name="q3" value="B">ブロッコリー</label> <label><input type="radio" name="q3" value="B">なす</label> <label><input type="radio" name="q3" value="D">ハンバーグ</label> <input value="診断"> </form> 答えは以下のようにしたいです。 Aにもっとも多くチェックされた=あなたは白が好き Bにもっとも多くチェックされた=あなたは緑が好き Cにもっとも多くチェックされた=あなたは青が好き Dにもっとも多くチェックされた=あなたは茶色が好き これはどういった計算で書けばいいのでしょうか? 本やネットを探してみましたが自分ではわかりませんでした。 初歩的な質問かもしれませんが何かヒントをくれると幸いです。

  • 必須入力項目と入力必須項目

    こんにちは。 今日、コンピュータシステムの画面設計の打合せをしていて 議論になったことがあるので質問させて下さい。 画面の入力項目で、必ず入力しなくてはならない項目が あるのですが、この事を ・必須入力項目 ・入力必須項目 のどちらで呼べばよいのでしょうか? 細かい事で、私ははじめどうでもよいと思っていたのですが 上司は、「必須入力項目」では?との意見です 日本語的にはどちらが正しいのでしょうか?

  • 必須項目を解除するには…

    CGIプログラムの提供で有名なKENT WEBさん(http://www.kent-web.com/)でフォームメールのプログラム(http://www.kent-web.com/data/postmail.html)をダウンロードしカスタマイズしているのですが、ラジオボタンやチェックボタンの項目が必須項目になっており、htmlソースで消してもチェックが入ってしまいます。cgiソースのどの部分を消せば上記のものがチェックされなくなるのでしょうか? 教えてください。

    • 締切済み
    • CGI
  • チェックされた項目を、指定された場所に表示したい

    htmlとJavaScriptで、アンケートのようなものを作成しています。 ラジオボタン・チェックボックス・テキストエリア等で回答を選んで(書き込んで)もらい、 それぞれの結果を、吐きだしエリアへ表示させたいです。 ※イメージとして…左のテーブルに質問内容があり、選択後「決定」ボタンを押すと、右側テーブル内にあるスペースにチェックされた項目が吐きだされる。といった感じです。 左側の質問項目の作成は終わっており(<input type="radio" name="seibetu" value="女">女)のように作成しました)、後はJS!と思ったのですが… 仕事で何年も前に触ったきりの為、まったく分からなくなってしまいました。。 「submitかな?」と思い、HP等も色々と検索してみたのですが、求めているものが見つからず…。 何か参考になるようなHPや、そのままコピーして使えるようなサンプルは御座いませんでしょうか。 宜しくお願い致します。

  • フォームの必須項目を埋めるまで特定のボタンを無効化する

    こんばんは。 会員登録用のフォームを作成しているのですが、必須項目が入力、もしくは選択されていない場合には特定のボタン(次へボタンなど)を無効化するようにできたらな、と思っているのですが、そのような方法をご存知の方はいらっしゃいませんでしょうか。テキストボックス、チェックボックス、ラジオボックス、コンボボックスなど、色々な入力部品が混在しています。 テキストボックスでは入力、チェックボックス・ラジオボックス・コンボボックスでは特定の項目(name属性で指定するなど)が指定された場合以外を無効化したいと思っています。 こんな内容で理解できるかは不明ですが、ご存知の方はぜひご伝授ください。

専門家に質問してみよう