intra-mart Accel Platform / スクリプト開発モデル プログラミングガイド

«  バリデーション/エラー仕様   ::   コンテンツ   ::   汎用メッセージ画面  »

バリデーション

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');
}
...

«  バリデーション/エラー仕様   ::   コンテンツ   ::   汎用メッセージ画面  »