タイトルの通り、ルックアップフィールドの「クリアー」の「OK」を押した時に、チェックボックスで選択されているチェックを消したいと考えております。下記のコードで「クリアー」を押した時にチェックボックスを空白にすることは出来たのですが、「クリアー」後の「OKの」classを取ってきても同じ動作になりませんでした。どのようすればいいのか教えていただけませんか?
(function(){
‘use strict’;
kintone.events.on([‘app.record.create.show’, ‘app.record.edit.show’], function (event) {
document.getElementsByClassName(‘button-simple-cybozu input-clear-gaia’)[0].addEventListener(‘click’, function(click) {
var myRecord = kintone.app.record.get();
myRecord.record[‘チェックボックス’][‘value’] = [];
kintone.app.record.set(myRecord);
}, true);
return event;
});
})();
クリア後のOKは、クリアボタン押下後に生成されてるため、押下後に取得するようにします。ただ、押下後すぐには存在しないので時間差で取得しつつ、OKボタンにイベント付与させるとこのような形になるかと思います。
(function () {
'use strict';
kintone.events.on(['app.record.create.show', 'app.record.edit.show'], function (event) {
document.getElementsByClassName('button-simple-cybozu input-clear-gaia')[0].addEventListener('click', function (click) {
setTimeout(() => {
let el = document.querySelector(".removelink-confirm-btn-cybozu.input-lookup-confirm-btn")
el.addEventListener("click", (() => {
var myRecord = kintone.app.record.get();
myRecord.record['チェックボックス']['value'] = [];
kintone.app.record.set(myRecord);
}), 500)
})
}, true);
return event;
});
})();
ただ、強引な作りなので出来るならチェンジイベントを用いて、その変化結果に対してチェックボックスの内容を変えてあげるのが良いかと思います。その際ルックアップでは直接チェンジイベントを感知できないので実装変更する際は参照ください。
nabe様
コメントいただきありがとうございます!
初めはルックアップで他のフィールドのコピー先の変化結果を見るようにしていたのですが、レコード追加時にだけ動かくなかったので、今回問い合わせさせて頂きました。因みにユーザー選択フィールドなんですが、何故かわかったりしますか?
変更に対してのイベントで差分がでてるようでしたら、editで作成していて、createのイベント(app.record.create.change.<フィールドコード>)を定義してないのかなぁと思います。
https://developer.cybozu.io/hc/ja/articles/201941984#step3
https://developer.cybozu.io/hc/ja/articles/202166270#step3
その際、チェンジイベントをそれぞれ書いてあげるのもいいですが、こちらのようにまとめて上げるとすっきりするかと思います。
仰る通り定義するのを忘れておりました。
書き方についてもコメント頂き有り難うございます。
無事解決できました!