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

フォームブリッジにて、

商品の注文数を登録する数値フィールドに、入力制限機能を実装する予定です。

入力制限の内容は、商品の在庫数と比較し、在庫数以上の数値を入力すると、

エラーメッセージを表示し登録ボタンを押下できないようにする機能です。

 

トヨクモ様に相談したところ、サポート対象外との事で、、、

困ってしまいこちらのコミュニティに投稿した次第です。

 

当方、kintone 初心者で未熟者であります。

宜しくお願いします。

小原 徳康さん

こんにちは。

 

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;
  }];

})();

koichiさん

こんにちは。

ご丁寧にソースまでご記載頂き、本当に有難うございます。

移植して、検証してみます。

本当に助かりました。。。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。