お知らせ

Movable Type 5実践テクニック2010年3月26日

Movable Type 5実践テクニック」が発売されました。
実際的なWebサイト製作事例を通して、テーマと複数ブログ活用を中心に、Movable Type 5の実践的な使いこなし方を解説しています。
Movable Typeでサイト制作をされている皆様はぜひお買い求めください。

他にも多数書籍を執筆しています。
こちらもぜひご覧ください。

メールフォームプラグインV2.0・その15(未入力エラーの判別)

| コメント(13) | トラックバック(0)

メールフォームプラグインV2.0では、各フィールドの未入力を判別することができます。
その方法を解説します。

1.標準の判別方法

未入力フィールドに関して何も指定しない場合は、名前/メールアドレス/本文のいずれかのフィールドが未入力のときに、送信エラーのページが表示されます。

「MTErrorMessage」というタグで、エラーメッセージを表示することができます。
例えば、本文が未入力のままで送信ボタンがクリックされた場合、MTErrorMessageタグの出力は、「本文を入力してください。」になります。

また、この後で述べる「MTMailPreviewIfFieldError」のタグを使って、フィールドごとに個別にエラーを判別してメッセージを表示することもできます。

2.入力必須フィールドの指定

入力必須のフィールドを変えることもできます。
例えば、メールアドレスが未入力でもエラーにならないようにしたり、自分で追加したフィールドを入力必須にしたりすることができます。

入力必須のフィールドを指定するには、まずメールフォームの設定のページを開きます。
そして、「フォームのチェック項目」の部分の「未入力エラーをチェックするフィールド」の欄に、エラーチェックの対象としたいフィールドの名前を、コンマで区切って入力します。

例えば、以下の画面のように入力すると、mail_email/mail_author/mail_subject/mail_textの4つのフィールドがエラーチェックの対象になります。

↓未入力エラーをチェックするフィールドを設定する
未入力エラーをチェックするフィールドを設定する

なお、入力必須のフィールドを指定すると、標準の判別は行われなくなります。
名前/メールアドレス/本文を入力必須にしたい場合は、上の例にもあるように、それらのフィールド名も入力する必要があります。

3.フィールドごとに未入力をチェックする

入力必須フィールドに入力がない場合、送信エラーページが表示されます。
その際に、エラーのフィールドごとに何らかのメッセージを表示したり、書式を変えたりすることもできます。

入力必須フィールドが未入力になっているかどうかは、「MTMailPreviewIfFieldError」という条件タグで判断します。
このタグの書き方は以下のようになります。

<MTMailPreviewIfFieldError name="未入力を調べるフィールドの名前">
フィールドが未入力の時に出力する内容
</MTMailPreviewIfFieldError>

例えば、本文(mail_text)を入力必須にするように指定していて、かつ本文が未入力されていないときに、「本文の入力は必須です。」というエラーメッセージを表示したいとします。
その場合、以下のようにタグを組みます。

<MTMailPreviewIfFieldError name="mail_text">本文の入力は必須です。</MTMailPreviewIfFieldError>

トラックバック(0)

トラックバックURL: http://www.h-fj.com/mt/mt-tb.cgi/1223.

コメント(スレッド8件,コメント13件)

コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。

No.1 にのみや : 「フィールドごとに未入力をチェック」できないのですが

いつも役立つ情報をありがとうございます。
業務で使おうと思い、まずは自身の個人ブログで試験運用しようと悪戦苦闘しています(苦笑)。

さて、導入にあたって躓いた点が1カ所あります。
本エントリーで記述されている「フィールドごとに未入力をチェック」が出来ないのですが、

<MTMailPreviewIfFieldError name="mail_text">本文の入力は必須です。</MTMailPreviewIfFieldError>

のようなコードは、どのテンプレートモジュールのどの場所に記述すれば良いのでしょうか?
また、「mail_error:送信エラー」テンプレートモジュールの記述では、
上記で指定したとしても「<$MTErrorMessage$>」は入れなければならない、という解釈で宜しかったでしょうか?
ご教授下さい。

No.2  : Re:「フィールドごとに未入力をチェック」できないのですが

>にのみやさん
こんにちは。プラグインご利用ありがとうございます。

MTMailPreviewIfFieldErrorタグの記述先ですが、各フィールドのすぐそばにエラーメッセージを表示するなら、「メールフォーム共通部分」テンプレートで、各フィールドのあたりに記述します。
また、フィールドごとにエラーメッセージを表示するなら、MTErrorMessageタグは必要ありません。
なお、サンプルテンプレートの「Movable Type標準テンプレート用(各種機能使用)」に、MTMailPreviewIfFieldErrorタグを使った例がありますので、そちらも参照してください。

No.3 にのみや : ありがとうございました

ありがとうございました。動きました。
挙動そのものが理解出来ていなかったようです。
MT標準TP用(全部入)の「mail_common.mtml」を読み、
把握することが出来ました。
AJAX版の使い勝手の良さが、本当に有り難いです。

これは希望なのですが、
企業ブログなどではよく利用されるのですが、
複数のメールアドレスで受信する場合や、
複数の送信先を発信者側が選択できるような機能が付けられたら、
非常に有り難かったりします。
意外とこういうメールフォームが少ないのですが、
需要は多いような気がします。
(...自分で開発しろって言われそうですが)

個人ブログで、夫婦や友人達で1つのブログを共有してる時も、
こういう機能は役に立つと思うのですが、如何でしょうか?

今後のご活躍も期待しています。
(「これだけは知っておきたい Webアプリケーションの常識」予約しました。今から読むのが楽しみです)

No.4 阿部 : セレクタの未入力をチェックについて。

いつもおせわになっております。
さて、表題のセレクタの未入力をチェックについてですが、
例えば
「 |▼選択してください」をセレクタの先頭に置き、
それ以外を選択しないとエラーメッセージを表示したいのですが、
何か方法があるのでしょうか?
(例えば<MTMailPreviewIfNotChecked name="">のような)

よろしければご教授ください。
よろしくお願いします。

No.5  : Re:セレクタの未入力をチェックについて。

>阿部さん
こんにちは。

ご質問の件ですが、以下のようにoptionタグを組んで(value属性を空文字列にする)、そのoptionを含むselectを入力必須にすれば良いはずです。

<option value="">|▼選択してください</option>

No.6 じょに : テキストボックスの追加と未入力エラーについて

はじめまして。
メールフォームプラグインV2.10を利用させていただいております。

カスタマイズについて1点質問させていただきたい事があります。

PC用メールアドレス " /> 携帯メールアドレス " />

上記のように「PC用」と「携帯用」のアドレスを記入してもらう項目を設けたいのですが、
未入力のエラー判別はこのどちらかが記入されていればエラーでは無いようにしたいのです。

ラジオボタンを作るMTSetParamListを利用して何とか出来ないかと色々試してみましたが、
自分では解決ができなかったため、質問させていただきました。

お忙しい中大変申し訳ありませんが、解決法等あればご教授いただければと思います。
よろしくお願いいたします。

No.7 じょに : (無題)

申し訳ありません・・・

引用タグを用いて、HTMLコードを記載したら上記のようになってしまいました・・・

<tr>
<td>PC用メールアドレス</td>
<td>
<input type="text" name="mail_pc_ad" value="<mt:mailPreviewExtParam name="mail_pc_ad" />" />
</td>
</tr>
<tr>
<td>携帯メールアドレス</td>
<td>
<input type="text" name="mail_mob_ad" value="<mt:mailPreviewExtParam name="mail_mob_ad" />" />
</td>
</tr>

正しくはこのように記載した場合、でした。
コメント欄を汚してしまい大変申し訳ありません。

No.8  : Re:テキストボックスの追加と未入力エラーについて

>じょにさん
こんにちは。

申し訳ありませんが、ご希望のようなことを行うには、プラグインを別途拡張する必要があります。

No.10 やま : 入力必須フィールドをひとつも指定しない

いつもおせわになっております。

さて、ちょっと変かもしれませんが、
入力必須フィールドをひとつも指定しないということはできますでしょうか?
たとえば、たくさんの項目の中からどれでもいいから答えてくれたらいいなと思っているアンケートなど、こちら側で必須を設定しないで、ユーザーに任せたい場合などのケースです。

何か手がありましたら、よろしくお願いします。

No.11  : Re:入力必須フィールドをひとつも指定しない

>やまさん
こんにちは。

以下のようにすれば、入力必須フィールドをなしにすることができます。

1.メールフォーム共通部分テンプレートのformタグの内部に、以下のタグを追加します。

<input type="hidden" name="dummy" value="1" />

2.メールフォームの設定で、「未入力エラーをチェックするフィールド」の欄に「dummy」と入力します。

No.12 やま : (無題)

ありがとうございます。

うわ~、なんか、知ってる人にとっては、基本中の基本といったところなんでしょうか?この簡潔さは・・・

未熟者でお恥ずかしい(^_^;)

今後ともよろしくお願いします。

No.13 すま : チェックボックスを追加するにはどのように記述すれば良いでしょうか

例えば「お問合せ分類」と言う表題があり、それに対して
(チェックボックス)意見感想
(チェックボックス)質問
(チェックボックス)その他
というようなチェックボックスを用意し、
いずれかひとつを必須にしたい場合はどのように
記述すれば良いでしょうか。

テキスト項目の追加は出来るようになりましたが、
まだまだ解らない事だらけでお手数をおかけしますが
よろしくお願いいたします。

No.14  : Re:チェックボックスを追加するにはどのように記述すれば良いでしょうか

>すまさん
こんにちは。

ご質問の件ですが、申し訳ありませんが「複数のチェックボックスのうちどれか1つ」という形でのチェック必須は、このプラグインでは対応していません。

コメントする