【フォームブリッジ】複数項目に対してvalidations設定

お世話になっております。

フォームブリッジでvalidationを設定するときに、「フィールドコード」というフィールドに

validationを設定しているのですが、このvalidationを「フィールドコード1」「フィールドコード2」という2項目に対して設定したい場合、どのように記述すればよいでしょうか?

どなたか教えていただけませんでしょうか?

よろしくお願いいたします。

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

1 Like

フィールドコードをfilterするときに
複数のフィールドコードに対応して A または B
にして、該当した項目にvalidationsをpushしています。

// katakana_validationがなにかわからなかったので
// フォームブリッジ】カタカナのみの入力の制限
// https://community.cybozu.dev/t/topic/5744/2
// を改変
(function () {

    'use strict';

    fb.addValidators = function (state) {
        return {
            katakana_validation: {
                // エラーメッセージ内容
                getMessage: function (fieldCode, params) {
                    return '全角カタカナで入力してください。';
                },
                // エラー判定条件
                validate: function (value, params) {
                    // valueは全角カタカナのフィールドに入力された値
                    value = (value == null) ? "" : value;
                    if (value.match(/^[ァ-ヶー ]+$/)) {
                        return true;
                    } else {
                        // 全角カタカナ以外が含まれる場合はエラー
                        return false;
                    }
                }
            }
        }
    };

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

})();
1 Like

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