Skip to content

入力条件チェックを導入する

先のページでメールは飛ぶようなりました。しかし、フォームとしてはまだ完成とは言えません。

フォームの入力要素ごとに、必須項目かどうかや、入力内容が正しい形式かなど、入力要素に合わせた様々な条件を規定する必要があります。また、その条件に適合していない場合はエラーを表示する必要もあるでしょう。これはどんなフォームにも必要な基本機能です。

validation_0-1-0

espar form は標準で搭載しており、これをバリデーション機能と呼びます。1行もプログラムを書く必要がなく、入力条件チェックとエラー表示を簡単に実装できるようになっています。

本ページではバリデーション機能を実装する手順を紹介します。

先のページの実装を終えている読者の方なら容易に実装することができることでしょう。バリデーションもまた「CSSクラスを追加する」ことで機能する仕組みだからです。実装は以下の順に進めていくこととなります。一つ一つの作業は非常にシンプルです。

  1. バリデーションクラスを決定する
  2. 入力項目にバリデーションを適用する
  3. エラー用の記述を追加する
  4. 動作確認する

1. バリデーションクラスを決定する

バリデーション用のCSSクラスは以下の命名規則で決まります。

[フォームID]-[バリデーション種別]

フォームIDは、フォームを識別する espf で始まる文字列です。バリデーション種別とは入力条件を意味する文字列で、よく使われるものには以下のようなものがあります。(一覧はこちら)

入力条件バリデーション種別
必須項目であるrequired
メールアドレス形式であるemail
URL形式であるurl
電話番号であるtel
郵便番号であるzip

例えば、フォームIDが espf の場合、必須項目であることを意味するバリデーションクラスは、

espf-required

となります。

2. バリデーションを適用する

次に、適用したい入力要素にバリデーションクラスを適用します。バリデーションクラスは <input>, <select>, <textarea> の要素に指定できます。

例えば、フォームIDが espf の場合で、名前の入力項目に適用する場合は以下のようになります。

<form class="espf">
...(省略)...
<tr>
<th>
<label for="name">お名前</label><span>必須</span>
</th>
<td>
<div><input type="text" name="name" class="espf-required"></div>
</td>
</tr>
...(省略)...
</form>

名前の入力欄の <input> 要素の class 属性に、espf-required のバリデーションクラスを 指定していることに注目して下さい。espar form ではこのように、入力項目ごとに必要なバリデーションクラスを必要な数だけ class 属性に指定していきます。

3. エラー用の記述を追加する

入力条件に適合しない場合は、エラー表示が必要です。espar form では、エラーの表示制御を自動で行う仕組みが備わっています。

3-1. エラー表示クラスを決定する

エラー表示にもCSSクラスを使用します。以下の命名規則で決定されます。

[フォームID]-e-[対象の入力項目のname属性値]-[バリデーション種別]

どの入力項目の、どのバリデーション種別に対するエラーなのか…をCSSクラスで表現します。

例えば、バリデーションクラスを適用した名前入力項目のHTMLが以下のようになっている場合、

<input type="text" name="name" class="espf-required">

この入力項目が入力されていない(つまり必須項目であるという条件に適合しない)時のエラー表示クラスは、

espf-e-name-required

となります。name 属性が name である要素の required バリデーションに対するエラーということです。

3-2. エラー表示クラスを適用したHTML要素を追加する

エラー表示クラスを指定したエラー表示用HTML要素を追加します。例えば以下のようになります。

<form class="espf">
...(省略)...
<tr>
<th>
<label for="name">お名前</label><span>必須</span>
</th>
<td>
<div><input type="text" name="name" class="espf-required"></div>
<div><p class="espf-e-name-required">お名前は必須項目です</p></div>
</td>
</tr>
...(省略)...
</form>

4. 動作確認する

入力条件チェックが必要なすべての項目に、バリデーションクラスの適用とエラー表示用HTMLの追加を行えたら、バリデーション機能の実装は完了です。

最後に動作確認を行いましょう。

あえてエラーがでるような入力を試してみて、エラーが表示されるかを確認して下さい。確認画面があるフォームなら[確認]ボタン、確認画面がないフォームなら[送信]ボタンをクリックすると以下のようにエラーが表示される筈です。

validation_0-1-0

期待した通りにエラーが表示されない場合は、以下のページを参照して下さい。

この後の進め方

ここまでの手順で、多くの場合はフォーム実装を完了できている筈です。実装を完了している場合は、最後に迷惑メール誤判定を抑制するを参考に必ずDNSの設定を調整して下さい。

もしフォーム実装の要件が満たせていない場合は、以下ページを参考に高度な実装を行えます。

ページ実現できる高度な実装
メールテンプレートメールの内容を入力値によって変える条件分岐
独自バリデーション独自の入力条件チェックの実装
表示制御クラス入力画面や完了画面にだけ表示したいメッセージを表示
チャット連携slackやchatworkなどのチャットサービスに転送
外部API連携RestAPIを備えた外部サービスやシステムと連携
(Google スプレッドシートやサイボウズ kitnone 等)
複数フォームと値コピー複数フォームをまたがるウィザード形式のフォームを実装
ファイル添付ファイル添付を受け付けるフォームを実装
グローバルオブジェクト細かな振る舞いの制御
コールバック任意のタイミングで独自の実装を注入