フォームブリッジの数値フィールドの入力チェックについて

小原 徳康さん

こんにちは。

 

JavaScriptでバリデーションを定義できます。

FormBridgeカスタマイズ()%3B-,Validation,-Custom%20validator)

 

以下の例では、fb.events.form.createdのタイミングで

「注文数」フィールドに対して、バリエーション「max_validation」を設定します。

 

「max_validation」の中身は、fb.addValidatorsで定義しています。

「注文数 > 在庫数」の場合はreturn falseとなり、エラーメッセージが表示されます。

問題なければreturn trueで正常終了となります。

(function() {

  'use strict';

  fb.addValidators = function(state) {
    return {
      max_validation: {
        // エラーメッセージ内容
        getMessage: function(fieldCode, params) {
          return '最大' + state.record.在庫数.value + 'です。';
        },
        // エラー判定条件
        validate: function(value, params) {
          // valueは注文数と同値
          // 注文数 > 在庫数 の場合はエラー
          if (value > state.record.在庫数.value) {
            return false;
          }
          return true;
        }
      }
    }
  };

  fb.events.form.created = [function(state) {
    // 全フィールドからエラーを出したいフィールドを検索
    state.fields.filter(function(field) {
      // エラーを出したいフィールドコード
      return field.code === '注文数';
    })[0].validations.push({
      params: [],
      rule: 'max_validation' // fb.addValidatorsで定義した中から適用したいバリデーション名
    });
    return state;
  }];

})();