CSS Selector Generator | CSS のセレクタ一覧を一発で自動生成!

28

08月2009年

リアルタイムに入力チェック - jQuery Inline Form Validation Engine -

nakamura 20:01 PM

  • はてなブックマークに登録
  • livedoorクリップに登録
  • Yahoo!ブックマークに登録
  • deliciousに追加

イメージ

こんにちは、nakamura です。すっかり秋めいてきましたね。みなさんの今年の夏の思い出は何だったでしょうか。僕の思い出は叔父がやっている家庭菜園で膨大な量のきゅうりが取れてしまい、家のおかずが2週間ほどきゅうりづくしだった事でしょうか。自分、鈴虫かと思いました。

とあるプロジェクトで、入力フォームのバリデーションを javascript で実装したいという要件がありました。なおかつ最近よくみる submit ボタンを押さずともリアルタイムでエラーメッセージを表示してくれるおしゃれなアレです。そんな要件に添う為今回使ったのが Jquery Inline Form Validation Engine です。元々 sakai が見つけてきたものなのですが、仕組みも簡単で分かりやすく中々動作も軽快だったのでここでご紹介したいと思います。

ファイル構成

まずはスクリプトをダウンロードしましょう。こちら のページにある Download から zip ファイルをダウンロードしてください。

20090828_nakamura_01.gif

zip を展開すると下記のようなファイルとフォルダが出来るはずです。

css/template.css
css/validationEngine.jquery.css
js/jquery.js
js/jquery.validationEngine.js
js/jquery.validationEngine-fr.js
ajaxSubmit.php
demoSubmit.html
index.html
validateUser.php

この中で必要なファイルは validationEngine.jquery.css 、 jquery.js、jquery.validationEngine.js の 3 つです。実装する html の head タグ内に下記のように記述しましょう。

<link rel="stylesheet" href="css/validationEngine.jquery.css" type="text/css" media="screen" title="no title" charset="utf-8" />
<script src="js/jquery.js" type="text/javascript"></script>
<script src="js/jquery.validationEngine.js" type="text/javascript"></script>

validationEngine.jquery.css はエラーメッセージを表示するバルーンの見た目を定義しているファイルです。バルーンの見た目を変えたい時はこのファイルを編集するだけで OK です。

※ちなみに展開して出来た index.html をブラウザで開くとそのまま実際の動作を見ることが出来ます。作業前に動かしてみて動作のイメージを掴んでみるのも良いでしょう。

実装してみる

現在の Jquery Inline Form Validation Engine にデフォルトで実装されているバリデーションルールは下記の 11 個です。

optional: フィールドの入力があった場合にのみチェックする
required: 必須項目チェック
length[0,100] : 文字数のチェック
minCheckbox[7] : チェックボックスで選択可能な最大数をチェックする
confirm[fieldID] : 他のフィールドと入力値が同じかチェックする
telephone : 電話番号の書式チェックをする
email : メールアドレスの書式チェックをする
onlyNumber : 入力値が全て数字かチェックする
noSpecialCaracters : 記号の入力がないかチェックする
onlyLetter : 入力値がアルファベットと半角スペース、シングルクオテーションのみかチェックする
date : 日付の書式チェックをする

これらのルールをフィールドに適用する方法はとっても簡単で、フィールド要素の class 属性にルールを記述するだけです。例えば・・・

<input value="" class="validate[required,custom[noSpecialCaracters],length[0,20]]" type="text" name="user" id="user" />
<input value=""  class="validate[optional,custom[onlyLetter],length[0,100]] text-input" type="text" name="firstname" id="firstname" />
<input class="validate[required] radio" type="radio"  name="radiogoupe"  id="radio1"  value="1">

たったこれだけでバリデーションしてくれます。簡単ですねー。

カスタマイズしてみる

デフォルトのままだとエラーメッセージも英語、電話番号の書式チェック等も日本のものとは異なるのでここでは電話番号チェックをカスタマイズしてみましょう。

電話番号チェックのルールが書かれているのは jquery.validationEngine.js の 32 行目付近です。

"telephone":{
    "regex":"/^[0-9\-\(\)\ ]+$/",
    "alertText":"* Invalid phone number"}

正規表現とエラーメッセージを配列に入れている訳ですね。うーん、分かりやすい。カスタマイズするとこんな感じでしょうか。

"telephone":{
    "regex":"/^[0-9]{2,5}-[0-9]{1,4}-[0-9]{4}$/",
    "alertText":"* 電話番号の書式に誤りがあります。"}

これ以外にも独自のルールを作って実装する事も比較的簡単にできます。javascript のバリデーションはサーバサイドの負荷を軽減するという意味でも有用なのでこれだけ簡単に実装できるライブラリは重宝しそうですね!ぜひ一度お試しください。

バシャログスタッフによるWebサイト制作サービス

トラックバック

このエントリーのトラックバックURL
http://c-brains.jp/cgi-bin/mt/###/1987
###はmt-tb.cgiに変更してください。

コメント

こんにちは。いつも楽しく見させて貰ってます。
このJqueryプラグインを試しに触ってみているのですが、ファイルを読み込ませたりクラスを記述したりした設置後、
1.フォームのエラー判定を行う
2.エラーが出たフォームに正しい値を入力する
3.「送信ボタン」を押そうとすると効かない・・・
みたいな症状が出てしまうんです。
すいませんが、何か解消策のヒントなどあれば、教えて貰えたら嬉しいです。

Wikina さん

コメントありがとうございます!具体的な原因まではちょっと分かりませんが、、、僕だったらこうやって調査する、というのをいくつか。

1. submit 周りのソースコードをじっくり眺めてみる。jquery.validationEngine.js の 386 行目にある submitForm : function(caller) { から下です。どんなセレクタを使っているか等。

2. debug モードを使ってみる。
この Validation Engine には debug という function が用意されています(jquery.validationEngine.js の 586 行目)。実際に使った事はないですが、html 中に <div id="debugMode"> </div> のようなタグを埋め込んでおくと要所要所のデバッグメッセージが表示されるようです。これを使う事でエラー箇所の特定ができるかもしれません。

3. Firebug を使う。
上の 2 つでダメなら、Firefox アドオンの firebug を使って jQuery のデバッグをします。細かい使い方については『 firebug javascript デバッグ 』等で検索してもらえればたくさん出てきます。

頑張ってください!

>> nakamuraさん

ご返答、アドバイスとどうもありがとうございました。
ページ内の他のJavaScriptやjQueryとぶつかっているのかな?と思ってはいるのですが、なかなか難しそうです。
頂いた内容をもとにがんばってみますー。

コメントを投稿

ページの先頭へ

POPULAR TAGS
  • バシャログスタッフによるWebサイト制作サービス

ARCHIVE

特集

  • ステップアップ!CakePHP
  • 作って学ぶjQuery

RECENT COMMENTS

ty on Flashで動画を再生しよう!第 3 回 FLVプレーヤーをつくろう1/2。
お返事ありがとうございます。説明が足りなかったようで、もう少
minami on 【Fireworks】Fireworks の振る舞い 基本的なとこ
> nishiuraさん コメントありがとうございます。
minami on Flashで動画を再生しよう!第 3 回 FLVプレーヤーをつくろう1/2。
> tyさん コメントありがとうございます。 コンポーネント
ty on Flashで動画を再生しよう!第 3 回 FLVプレーヤーをつくろう1/2。
参考にさせていただきました。ありがとうございました。 とこ
Chakotay on 【Fireworks】Fireworks の振る舞い 基本的なとこ
現場では上級のデザイナーの人、レベルの高いセンスのあるデザイ