【フォームブリッジ】あるフィールドに、2週間後の日付(YYYY-MM-DD)を自動で設定する。

アドバイスお願いします。

FormBrigde でフォーム入力時に
「完了希望日(compRqstDate)」というフィールドの値を自動で、
本日の日付+14日後 の値を自動で入力することはできますか?
準備として、FormBrigdeのJavascriptの設定で、jQueryと moment,js
の読み込み設定をしております。

https://js.cybozu.com/jquery/3.3.1/jquery.min.js
https://js.cybozu.com/momentjs/2.10.3/moment-with-locales.min.js

 

– kintoneで類似のスクリプトを実装したときのものを参考に作成 – FormBridgeでは動きませんでした

(function() {
“use strict”;

//ロケールを初期化
moment.locale(‘ja’);

var date = moment();
var now = moment(date).format(‘YYYY-MM-DD’);

console.log(now);

var increaseDates = function(originDate, dates){
var targetDay = new Date((originDate.getTime() + dates*24*60*60*1000));
return targetDay.getFullYear()+‘-’+(‘0’+(targetDay.getMonth()+1)).slice(-2)+‘-’+(‘0’+targetDay.getDate()).slice(-2);
}

fb.events.form.created = [function(state) {
state.record.compRqstDate.value = increaseDates(new Date(event.record.submitDate.value), 14);
return state;
}];

})();

お世話になっております.
トヨクモの石川と申します.

フォームブリッジでは,日付/日時のフィールドに対して,直接Dateインスタンスを代入することができるため,
moment,jsで生成した「14日後」の日付を直接,対象のフィールドに代入することで実装できます.

以下にサンプルコードを載せさせていただきますので,ご参考にして頂ければと思います.

(function() {  
"use strict";  
fb.events.form.mounted = [function (state) {  
var dateFieldCode = 'date'; // 自動入力の対象となる日付フィールドのフィールドコード  
moment.locale('ja');  
var targetDay = moment().add(14, 'days')['\_d'];  
state['record'][dateFieldCode]['value'] = targetDay;  
return state;  
}];  
})();  

プログラムがコードスタイルになっておりませんでした.見にくいので,以下に同じものを再掲します.

(function() {
"use strict";
fb.events.form.mounted = [function (state) {
var dateFieldCode = 'date'; // 自動入力の対象となる日付フィールドのフィールドコード
moment.locale('ja');
var targetDay = moment().add(14, 'days')['_d'];
state['record'][dateFieldCode]['value'] = targetDay;
return state;
}];
})();

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