小原 徳康さん
こんにちは。
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;
}];
})();