このブログでかなりアクセスの高い記事がこれ・・・
どんなフォームにも使えるjQueryのフォームバリデーション exValidation 応用編
なんでアクセスされるのかな・・・サンプルあるからかな・・・って思ったら
本家の5509.meサイトがなくなっているからでしょうか。
そこで本来そちらのサイトにあった基本的な使い方も書いておいた方が良いかな・・・ということでサンプル作りました。
ホント、これのバリデーションは使いやすいです。
カスタマイズ性も抜群!分岐条件などがある場合は前の記事を御覧頂いた方がよろしいかと思います。
今回は基本ですので、初期設定をご覧ください。
exValidation 初期値
exValidationのソースから引用しました初期設定です。
/**
// 初期設定
errInsertPos : "body", // "body" or after(before)
err : null,
ok : null,
errFocus : false,
errHoverHide : false,
stepValidation : false,
scrollToErr : true,
scrollDuration : 500,
scrollAdjust : -10,
customScrollAdjust : false,
errPosition : "absolute", // fixed
errOpacity : undefined,
errTipPos : "right", // left
errTipCloseBtn : true,
errTipCloseLabel : "×",
errZIndex : 500,
errMsgPrefix : "* ",
customAddError : null, // function(){}
customClearError : null, // function(){}
customSubmit : null, // function(){}
customListener : "blur keyup change focus",
customBind : null,
*/
この中で、普通にカスタマイズしたいのは
errHoverHide = エラーメッセージにカーソルを乗せると消える
errTipCloseBtn = エラーメッセージに閉じるボタンを表示するか
errTipCloseLabel = 上記で表示する場合の閉じるボタンのテキスト「×」
errMsgPrefix = エラーメッセージの先頭文字 「入力してください」の「*」
errTipPos = エラーの表示位置 INPUT 等エレメントに対し左右を調整
scrollToErr = エラーのあった場所へスクロールするか「送信」ボタン押下時などで重宝します。
customListener = どの状態でエラー判定するか
「blur」:カーソルがそこから離れた時
「keyup」:1文字でも入力したらすぐ
「change」:変化があれば(selectやcheckbox,radioなど)
「focus」:カーソルを当てたらすぐ
この中のerrMsgPrefix以外はサンプルで調整しています。参考まで。
あとは好きにいじって調整してください。
基本・・・といっても実践的なシステム向け
JavaScriptがわかる方、とくにjQueryもなんとかという方はこちらで大丈夫かと思います。
JavaScript、cssの読み込みをお忘れなく!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>exValidationサンプル</title>
<link type="text/css" rel="stylesheet" href="css/style.css" />
<link type="text/css" rel="stylesheet" href="css/exvalidation.css" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/exvalidation.js"></script>
<script type="text/javascript" src="js/exchecker-ja.js"></script>
<script type="text/javascript"> // ページ情報読み込めてからチェック項目について設定する $(function(){ var validation = $("#inquiry-form") .exValidation({ // それぞれの項目に「class="chkrequired chkkatakana"」のように記述しているのと同じことをしています。 rules: { name: "chkrequired", name_: "laterCall", kana: "chkrequired chkkatakana", kana_: "laterCall", email: "chkrequired chkemail chkhankaku chkgroup", email_: "laterCall", birthday: "chkrequired chkgroup", birthday_: "laterCall" }, customListener: "blur", // onBlur時のみにしてみる stepValidation: true, errTipCloseBtn: false, errTipPos: "left", // 吹き出しが表示される位置(左右) errHoverHide: true, // マウスオーバーで消える scrollToErr: true // }); // チェックボタンで確認する場合 $('input.laterCall').click(function() { validation.laterCall('#' + this.id.replace('_','')); }); }); // エラー削除 function clearErrors() { // 表示されているエラーをフェイドアウト $("div[id*=err_]").fadeOut(); } </script>
</head>
<body>
<p class="note"><a href="http://5509.me/log/exvalidation">Archive</a> | <a href="http://5509.me/">5509</a></p>
<h1>exValidation</h1>
<form id="inquiry-form" method="get">
<fieldset>
<p class="attention">*は必須項目です</p>
<table>
<tbody>
<tr>
<th>お名前<span>*</span></th>
<td><input type="text" id="name" name="name" value="" />
<input type="button" id="name_" value="チェック" /></td>
</tr>
<tr>
<th>ふりがな<span>*</span></th>
<td><input type="text" id="kana" name="kana" value="" />
<input type="button" id="kana_" value="チェック" /></td>
</tr>
<tr>
<th>メールアドレス<span>*</span></th>
<td><span id="email"><input type="text" id="email1" name="email" value="" /> @ <input type="text" name="email2" value="" /></span>
<input type="button" id="email_" value="チェック" /></td>
</tr>
<tr>
<th>生年月日<span>*</span></th>
<td><span id="birthday"><input type="text" name="birthdayY" value="" /> 年 <input type="text" name="birthdayM" value="" /> 月 <input type="text" name="birthdayD" value="" /> 日</span><input type="button" id="birthday_" value="チェック" />
</td>
</tr>
</tbody>
</table>
</fieldset>
<p class="submit"><input type="submit" value="送信するんです" class="button" /></p>
</form>
<p class="copy">Copyright © <a href="http://5509.me/">5509</a> Some Rights Reserved.<br />サンプルについては <a href="http://gti.jp/">gti.jp</a> フリーフードファイター さとう に著作権があります。</p>
</body>
</html>
ちょっと長いですね・・・
laterCall というのは「あとでこの項目を精査する」という感じの機能です。
初期設定の rule のところでこれを「(項目)_」という形式で laterCall 指定してあげれば
その下にある $(‘input.laterCall’).click(function() 〜 の部分がアンダースコアを除いて
項目を取得しチェックする・・・という仕様です。
その下の clearErrorsはエラーが自動的には消えないため一括削除するための関数です。
・・・が、今回使用していません。サンプルとして前回のものから削除していないだけです。
本家がなくなったのでこちらの記事は大変助かってます。ありがとうございます。
オプション説明の【「blue」:カーソルがそこから離れた時】ですが
「blue」ではなく「blur」の間違いではないでしょうか。
よろしくお願いします。
そうかも!ありがとうございまーす
jqueryのバージョンが1.10.1移行だとfirefox,ieで、scrollToErrがきいていないようです。
クロームでは動いています。
たかしさん
情報ありがとうございます!!
作者さんのサイトへ要望して実現されなかったバグのですが、
errTipPos : “right”, // left
上記をleftにするとバグがあります。
(画面が進んでしまう or 表示が消えてしまう)
こちらを修正することは可能でしょうか?
Rightのままだと正常に表示されるのですが・・・
よろしくおねがいいたします
こちらのサンプルを使いましたが、バグ?で動かなかったんです。。
試にセレクトタグを入れて動くか確認してもらえないでしょうか。。
<select name=”a”>
<option value=”a”>n</option>
</select>
つんつんさん
コメントありがとうございます。
セレクトタグのサンプルは確かに無かったですね。
タグは記載してある通りそのまま入れたということでしょうか?
選択していなければダメということで良いんですよね?
時間を見てやってみまーす。
つんつんさん
お待たせしました。
SELECT タグ入れてみました
サンプル2
記事中のサンプル2の方です。
要は
<select name=”sei” id=”sei” class=”chkrequired”><option value=””>–</option><option value=”男性”>男性</option><option value=”女性”>女性</option></select>
という感じで 属性に id と チェック仕様class(この場合はrequiredで必須指定)を指定してください。
idの指定はエラーメッセージが表示されるかどうか関連があります。
※応用編にはいきなりSELECTタグが出ていましたのでこちらも参考にどうぞ
どんなフォームにも使えるjQueryのフォームバリデーション exValidation 応用編