新規投稿
フォローする

【formbridge】フィールドが空の場合非表示にしたい

javascript初心者です。
 
フォームブリッジにある特定フィールド(フィールドコード:test)の値が空の場合のみ、そのフィールドを非表示にしたいです。
※このフィールドはkviewerルックアップによって値が入ります
 
以下コードをフォームブリッジへアップロードしてみたのですが想定通り上手くいきません。
どこが間違っているかご指摘いただけますでしょうか?
(function() {
      "use strict";
      //fb.events.kviewer.record.mapped イベント:kViewer連携によりkViewerからレコード情報を取得しフォームに反映した時
      fb.events.kviewer.record.mapped = [function(state) {
              if (!state.record.test.value) {
                      state.fields[test].hide = true;
                      } else {
                      state.fields[test].hide = false;
                      }
                      return state;
              }];
})();
0

3件のコメント

Avatar
KT

連投失礼いたします。以下コードでも試してみたのですが、やはり動作しませんでした

(function () {
  "use strict";
  var hiddenFields = [ //データがない場合、非表示にするフィールドコード
      'test',
      'test1',
      'test2',
    ];

  fb.events.form.mounted = [function () {
      var hiddenElements = hiddenFields.map(function(hiddenField){
          return fb.getElementByCode(hiddenField);
      });
      for (hiddenField of hiddenFields) {
          if(state.record[hiddenField].value === ''){
              hiddenElements.forEach(function(hiddenElement){
              hiddenElement.style.display = 'none';
              });
      }
  }}];
})();
0
Avatar
akika
KT さん
 
state.fields[XX].hide の「XX」はフィールドコードではなく、インデックスを指定するといけそうです。
state.fields[インデックス].hide = true;
 
該当フィールドのインデックスを確認するには、console.logでstateを出力したりすることで、中身を確認する方法があります。
例:
0
Avatar
KT

state.fields[XX].hide の「XX」はフィールドコードではなく、インデックスを指定するといけそうです。

ありがとうございます。
すみません、インデックスではなくフィールドコードで指定したいので以下コードで書きなおしました。
しかし、値が入っているフィールドに関しても非表示になってしまいます。

(function () {
  "use strict";
  var hiddenFields = [ //データがない場合、非表示にするフィールドコード
      'test',
      'test1',
      'test2',
    ];
  fb.events.form.mounted = [function (state) {
      var hiddenElements = hiddenFields.map(function(hiddenField){
          return fb.getElementByCode(hiddenField);
      });
      for (var hiddenField of hiddenFields) {
          if(state.record[hiddenField].value === ""){
              hiddenElements.forEach(function(hiddenElement){
              hiddenElement.style.display = 'none';
              });
      }
  }}];
})();


kviewerルックアップによってフィールドに入った値が認識されておらず、全てのフィールドに対してif文内の処理が行われているようです。

以下発火イベントで書きなおしてみましたが、ダメでした。どう直せばよいかご存じでしょうか?

・fb.events.kviewer.record.mapped
・fb.events.kviewer.records.fetch
・fb.events.kviewer.records.mounted
0
サインインしてコメントを残してください。