新規投稿
フォローする

ルックアップ「取得」クリック時に処理を走らせたい

 ルックアップの取得ボタンを押したタイミングで実行したい処理があります。

changeのイベントでは無いように変更がないときにイベントが処理されません。

ルックアップフィールドの値が変わっていなかったとしても、取得をクリックしたら処理を走るようにするにはどうしたら良いでしょうか?

0

6件のコメント

Avatar
江田篤史

tanaka様

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

cstapの江田です。

addEventListener() メソッドを用いるとよいと思います。

こちらのページが参考になるかと思います。

https://developer.cybozu.io/hc/ja/community/posts/360002910283

0
Avatar
tanaka

確かにこちらがaddEventListener()を反応させるようにすればできそうです。

しかし、ルックアップフィールドの「取得」に対してdocument.getElementsByClassName()(IDでもいいですが)する方法がわかりません。

ルックアップフィールドが1つだけならできなくもないですが、

残念ながらルックアップフィールドは複数存在しておりそれぞれに処理違う処理をもたせたいです。

0
Avatar
江田篤史

tanaka様

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

 

ルックアップフィールドが複数あるのであれば、ページ内で上から数えて何個目のルックアップ要素なのかで区別して、それぞれにイベントリスナーを指定すればよいです。

(function() {
  "use strict";
  kintone.events.on(['app.record.create.show', 'app.record.edit.show'], function(event){
    document.getElementsByClassName('input-lookup-gaia')[0].addEventListener('click', function(click){
      //ページ内上から数えて1つ目のルックアップの取得ボタンを押した際の処理
      console.log("aaa");
    }, true);
    document.getElementsByClassName('input-lookup-gaia')[1].addEventListener('click', function(click){
      //ページ内上から数えて2つ目のルックアップの取得ボタンを押した際の処理
      console.log("bbb");
    }, true);
    document.getElementsByClassName('input-lookup-gaia')[3].addEventListener('click', function(click){
      //ページ内上から数えて3つ目のルックアップの取得ボタンを押した際の処理
      console.log("ccc");
    }, true);
  });
})();

上記リンクはサブテーブルを用いていた例なのでわかりにくかったですね。申し訳ございません。

1
Avatar
tanaka

なるほど!確かにその方法でできそうです。

ありがとうございます、早速試してみます。

 

0
Avatar
tanaka

無事取得クリックのタイミングで処理することができました!

江田篤史様ありがとうございました。

 

ちなみに今回は取得をクリックしたタイミングで処理させたくこの処理で解決しましたが

ルックアップを取得したタイミングでとなったらまた何か別の方法があったりするでしょうか?

 

0
Avatar
江田篤史

tanaka様

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

フィールド設定で「ほかのフィールドのコピー」を設定している場合は、値がコピーされたタイミングでイベントを取得できます。
https://developer.cybozu.io/hc/ja/articles/201941984#step3

kintone.events.on([
'app.record.create.change.ルックアップコピー先フィールドのフィールドコード',
'app.record.edit.change.ルックアップコピー先フィールドのフィールドコード',
], function(event){
//処理
});
0
サインインしてコメントを残してください。