勉強中なのですが、教えていただけますと幸いです。
スペースフィールドをおき、文字列をレコード詳細画面に表示させるjavascriptを設定してみたのですが、チェンジイベント発火後に生成された文字によってテキスト表示をさせたいのですが、
チェンジイベントを起こす直前のチェンジイベント発火にて生成されたテキストがでてきてしまいます。
下記コードにてどの様に修正したらよいでしょうか。
お手数をおかけしますが、お知らせいただけますと幸いです。
よろしくお願いいたします。
(function(){
'use strict';
kintone.events.on([
'app.record.create.show',
'app.record.edit.show',
'app.record.detail.show',
'app.record.edit.change.DateOfStayCount',
'app.record.create.change.DateOfStayCount',
'app.record.edit.change.inDate',
'app.record.create.change.inDate',
'app.record.edit.change.outDate',
'app.record.create.change.outDate',
],
function(event){
const APPID = kintone.app.getId();
//フィールドコードを変数にします
const SS1 = 'SS_rent';
const SS2 = 'SS_commonCharges';
const SS3 = 'SS_utilityCost';
const day1 = 'DateOfStayCount';
//レコードからフィールドの値を取得します
const valueSS1 = parseFloat(event.record[SS1].value);
const valueSS2 = parseFloat(event.record[SS2].value);
const valueSS3 = parseFloat(event.record[SS3].value);
const valueday1 = parseFloat(event.record[day1].value);
//非同期処理を遅延させます
setTimeout(function(){
//日毎賃料の計算
const SStotal = valueSS1 + valueSS2 +valueSS3;
const daysvalue = valueday1
//テキストを作成します
const resultText = SStotal+'円/日 × '+ daysvalue + '日';
//テキストを表示します
const textE1 = document.createElement('div');
textE1.style.textAlign = 'center';
textE1.style.fontSize = '10px';
textE1.style.fontWeight = 'bold';
textE1.textContent = resultText;
//テキストを表示する前に、既存のテキストをクリアします
const space = kintone.app.record.getSpaceElement('ResidencePeriod');
const existingText = kintone.app.record.getSpaceElement('ResidencePeriod').querySelector('div');
if(existingText){
existingText.remove();
}
//テキストを表示します
kintone.app.record.getSpaceElement('ResidencePeriod').appendChild(textE1);
}, 100);
return event;
});
})();