フォームブリッジ、バリデーションのタイミングについて

背景・実現したいこと

フォームブリッジで、回答ボタンを押した時にバリデーションのチェックを行い、

エラーの場合、画面遷移せずに内容を表示させたい。

 

‘’’

(() => {

  ‘use strict’;

 

  fb.addValidators = function (state) {

    return {

      //バリデーション

      sample_validation: {

        getMessage:function (fieldCode, params) {

           return’エラーメッセージ。';

        },

        validate:function (value, params) {         

          if(state.record.フィールドコード名.value >= 1 ){

            return false;

           } else {

             return true;

           }

         }

       },

     }

  };

  fb.events.form.created = [(state) => {

    consttarget = state.fields.find((item) => {

      returnitem.code === “フィールドコード名”

    })

    target.validations.push({

      params: [],

      rule:“sample_validation”,

    })

  }]

})();

‘’’

 

createdをconfirmに変更し、エラー値を入力した状態で確認ボタンを押すと、

確認画面に遷移、戻るボタン押下で入力画面に遷移、再度確認ボタン押下でエラーメッセージ表示がされる状態です。

 

これを

エラー値を入力、確認ボタン押下、エラーメッセージ表示、入力値を変更、問題なければ確認画面に遷移にしたいです。

fujiさん
こんにちは。

イベント fb.events.form.mounted に変更してみたらいかがでしょうか。

confirmですと、確認画面に移った後にバリデーション設定が反映されます。

mountedですと、入力画面の描画が完了した後にバリデーション設定が反映されますので、ご希望の動作になるかと思います。

koichiさん

返信ありがとうございます。

 fb.events.form.mountedも試してみましたが、こちらも入力した瞬間バリデーションが効いて

エラーメッセージが返ってきます。

どうも明示的にイベントのキャンセルをすることはできないとあるので、

確認ボタンを押した時にバリデーションチェックして、エラー値であれば画面遷移せずにエラーメッセージを表示、という処理は組めないようでした。

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