バリデーション¶
jQuery Validation を利用したクライアント側でのバリデーションをかけることができます。バリデーションをかける場合、通常はクライアント側とサーバ側の両方にバリデーションを実装します。JSSP Validator と連携すると、サーバ側に設定ファイルを書くだけでサーバ側とクライアント側の両方に共通なバリデーションをかけられることになります。なお、クライアント側だけで完結させることも可能です。この場合は、jQuery Validation の記述方法に則ったルール、メッセージをクライアント側で実装することになります。
項目
前提¶
バリデーションは jQuery Validation Plugin を利用します。ライブラリは自動的に読み込まれません。バリデーションを利用する際は以下のような実装を行ってください。<imart type="head"> <script src="ui/libs/jquery-validation-1.9.0/jquery.validate.js"></script> </imart>
JSSP Validation と連携する場合¶
JSSP Validator の設定ファイルをクライアント側に読み込み、jQuery Validation Plugin の設定に変換することで、サーバ側とクライアント側とでバリデーションのルールを共有することができます。共有するには、バリデーション設定ファイル の記述、imuiValidationRule タグの記述、imuiValidate 関数の呼び出しが必要です。
実装例¶
以下のような HTML を例に取り、user_cd に対して user_cd バリデーションをかけます。<div class="imui-form-container"> <form id="sampleform" name="sampleform"> <input type="text" name="user_cd"/> <input type="button" id="validate-button" value="validate"/> </form> </div>
バリデーション設定ファイルの記述¶
項目 user_cd に対して userCd バリデーションをかける、というバリデーション設定ファイルを作成します。バリデーション設定ファイルとして以下のようなファイルを WEB-INF/jssp/src/validator/sample.js として保存します。設定ファイルの内容の詳細は バリデーションルール を参照してください。var init = { 'user_cd': { caption: 'user_cd', userCd: true } }コラム
JSSP Validator の「file」「mimeType」ルールは クライアントサイド JavaScript バリデーション(imuiValidate)では動作いたしませんのでご注意ください。
imuiValidationRule タグの記述¶
上記で作成したバリデーション設定ファイルを読み込むために、imuiValidationRule タグを HTML に追記します。imuiValidationRule タグの rule 属性に、バリデーション設定ファイルのパスを指定します。また、後述の imuiValidate 関数の引数となる rulesName, messagesName 属性も指定します。<imart type="head"> <script src="ui/libs/jquery-validation-1.9.0/jquery.validate.js"></script> <imart type="imuiValidationRule" rule="validator/sample#init" rulesName="rules" messagesName="messages"></imart> </imart> <div class="imui-form-container"> <form id="sampleform" name="sampleform"> <input type="text" name="user_cd"/> <input type="button" id="validate-button" value="validate"/> </form> </div>
コラム
imuiValidationRule タグは script タグを出力するので、script タグの内部に書いてはいけません。
imuiValidation 関数の記述¶
バリデーションを実行するため、imuiValidate 関数の呼び出しを追記します。imuiValidate 関数の引数に、form の id, imuiValidationRule タグの rulesName, messagesName に指定した値の3つを指定します。<imart type="head"> <script src="ui/libs/jquery-validation-1.9.0/jquery.validate.js"></script> <imart type="imuiValidationRule" rule="validator/sample#init" rulesName="rules" messagesName="messages"></imart> <script type="text/javascript"> jQuery(document).ready(function() { jQuery('#validate-button').click(function() { imuiValidate('#sampleform', rules, messages); }); }); </script> </imart> <div class="imui-form-container"> <form id="sampleform" name="sampleform"> <input type="text" name="user_cd"/> <input type="button" id="validate-button" value="validate"/> </form> </div>テキストボックスにひらがなを入力し、validate ボタンをクリックするとエラーが表示されます。
クライアント側だけで完結させる場合¶
クライアント側だけで完結させる場合、jQuery Validation Plugin のルール、メッセージの指定の仕方に則って実装します。使用できるバリデーションルールは、バリデーションルール と同様です。
実装例¶
バリデーションのルールと、バリデーションの結果、チェックにかかった場合のメッセージを指定します。指定しない場合、メッセージは英語で表示されます。var rules = { user_cd: { required: true, minlength: 5, } }; var messages = { user_cd: { required: '必須です', minlength: '少なくとも5文字必要です' } }; imuiValidate( '#account', // 送信するフォームのID rules, // バリデーションルール messages // バリデーションメッセージ );上記のように指定した場合、user_cd のバリデーションルールに該当した際に、同じキーのメッセージが表示されます。
バリデーションをリセットする方法¶
- imuiValidate を実行すると、対象フォームに対し常にチェックをかけるようになるため、一度投稿処理をしてからでも、画面を再読込みしない限り常にチェックがかかります。
この動作を変える必要がある場合、imuiResetForm メソッドでチェックをかけた form を初期化してください。
...
// バリデーションチェック
if (imuiValidate('#form', rules, messages)) {
// バリデーションチェックに成功したら投稿処理
doSomething();
// バリデーションのリセット
imuiResetForm('#form');
}
...