【フォームブリッジ】ルックアップを自動で実行した時の処理

いつも大変参考にさせていただいております。

表題の通りkviewerルックアップでルックアップをチェックボックスを変更した時に自動実行しています。

この際ルックアップダイアログに該当データが無かった場合ルックアップダイアログを自動で閉じたいと考えています。

作成したjsは以下の通りですがうまく動作してくれません。

fb.events.fields.チェックボックス.changed = [function(state) {

  fb.getElementByCode('kviewerルックアップ').getElementsByTagName('button')[0].click();

  setTimeout(function() {

  const closeButton = document.getElementsByClassName('el-dialog__close el-icon el-icon-close')[0];
  closeButton.click();
    
  }, 1000);

    return state;
   
   }];

ルックアップのデータは重複を禁止していますので表示される値は1件だけです。

お手数ではございますがご教授をい願いいたします。

tanakaさん

こんにちは。

 

以下の記事をご覧いただきましたか?

kviewerルックアップで重複チェック

 

もしかしたらsetTimeoutの1000ミリ秒が早すぎるのかもしれません。

ここの秒数を伸ばすか、closeButtonの処理のみ「fb.events.kviewer.records.fetch」イベント内で記述すれば解決する可能性があります。

koichi様

早速のコメントありがとうございます。

実はこちらの記事を参考に作成させていただいたものです。

ルックアップフィールドが2つございまして、fb.events.kviewer.records.fetchを使用して最初はコードを作成したのですが、この場合1つ目のルックアップダイアログは閉じるのですが、2つ目の時は閉じてくれませんでした。

そのためfb.events.fields.チェックボックス.changedを使用してルックアップダイアログを閉じさせようとしたのが上記のコードとなります。

el-dialog__close el-icon el-icon-closeは一つ目のダイアログにしか適用されないものなのでしょうか?

ご存じでしたらお教えくださいませ。

setTimeoutは2秒でも4秒でも閉じませんでした。

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

自己解決です。

自動で閉じたいルックアップフィールドの表示順番を最初のルックアップフィールドよりも前に表示させることで解決しました。

やはり表示順の最初のルックアップフィールドのダイアログにしか反応してくれないようです。

多少フォーマットは崩れますが、オペレーションでカバーできそうです。

koichi様

ありがとうございました。また何かございましたらよろしくお願いいたします。

補足だけいたします。

ルックアップが複数ある場合は配列の添え字が変わります。

一番目にあるルックアップは[0]となりますが、二番目は[1]で指定が必要です。

ルックアップの位置を変えることで解決された点もこの理由によるものです。

document.getElementsByClassName('el-dialog__close el-icon el-icon-close')[0];
document.getElementsByClassName('el-dialog__close el-icon el-icon-close')[1];

koichi様

返事が遅くなり大変申し訳ございませんでした。

おかげさまできちんと対応でき、動作するようになりました。

本当にありがとうございました。

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