まだ勉強し始めたばかりの初心者です。
文字列(1行)フィールドに「R020528」形式で和暦が入力されたタイミングで、同フィールドを「令和2年5月28日」に書き換えたいのですが、動作としては期待通りになりましたが、イベントの対象フィールドを書き換えているため、また’app.record.edit.change.<フィールドコード>’のイベントが発生してしまっているようです。
とりあえず、条件文で2回目を回避していますが、根本的な解決方法がわかりません。
ご教示のほどよろしくお願い致します。
(function () {
“use strict”;
var events = [‘app.record.create.change.wareki_birth’,
‘app.record.edit.change.wareki_birth’];
//‘app.record.create.submit’,
// ‘app.record.edit.submit’,
kintone.events.on(events, function (event){
var record = event.record;
//和暦を取り出す
var wareki = record[‘wareki_birth’].value;
//alert(wareki);
var nengo = wareki.substr(0,1);
var wYear = parseInt(wareki.substr(1,2));
var wMonth = parseInt(wareki.substr(3,2));
var wDay = parseInt(wareki.substr(5,2));
var sYear = 0;
//エラー回避
if(nengo === “令” || nengo === “平” || (nengo === “昭”) || (nengo === “大”) || (nengo === “明”)){
return event;
}
//和暦を西暦に変換
//alert(nengo);
if(((nengo === “R”) || (nengo === “r”)) && (wYear > 0)) {
sYear = wYear + 2018;
var nengo_kanji = “令和”;
} else if (((nengo === “H”) || (nengo === “h”)) && (wYear > 0) && (wYear <= 31)){
sYear = wYear + 1988;
nengo_kanji = “平成”;
} else if (((nengo === “S”) || (nengo == “s”)) && (wYear > 0) && (wYear <= 64)){
sYear = wYear + 1925;
nengo_kanji = “昭和”;
} else if (((nengo === “T”) || (nengo === “t”)) && (wYear > 0) && (wYear <= 15)){
sYear = wYear + 1911;
nengo_kanji = “大正”;
} else if (((nengo === “M”) || (nengo === “m”)) && (wYear) > 0 && (wYear <= 45)){
sYear = wYear + 1867;
nengo_kanji = “明治”;
} else{
alert(‘指定の和暦年は存在しません’);
return event;
}
//alert(nengo_kanji);
//和暦を令和〇年〇月〇日にフォーマット
var wDate = nengo_kanji + wYear + “年” + (wMonth) + “月” + wDay + “日” ;
record[‘wareki_birth’].value = wDate;
//alert(wDate);
//西暦に
var sDate = moment([sYear, wMonth-1, wDay]);
record[‘sei_birth’].value = sDate.format(‘YYYY-MM-DD’);
//alert(sDate);
return event;
});
})();