ohyabu
1
フォームブリッジでチェックシートのようなものを作っています。
ドロップダウンを変更したら日付フィールドに今日の日付を入力したい。
ドロップダウンは複数ありますがテストで下記JSを試しましたが
日付フィールドが変更されません。
お手数おかけしますがご教授よろしくお願いします。
(function() {
“use strict”;
// フィールド変更時のイベントリスナーを設定
fb.events.field.change = [function (state, fieldCode) {
var todayFieldCode = ‘date’; // 今日の日付を入力するフィールド(fields[0])
var targetFieldCode = ‘dropdown’; // ドロップダウンのフィールドコード(fields[1])
// もし、変更されたフィールドがドロップダウンのフィールド(targetFieldCode)に該当する場合
if (fieldCode === targetFieldCode) {
var d = new Date();
var today = d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate();
// 今日の日付を `fields[0]` に入力
state['record'][todayFieldCode]['value'] = today;
}
return state;
}];
})();
実行したコードをコピー&ペーストしましょう
コードをここに入力または貼り付け
aaa
2
たとえば、こんな感じでしょうか?
(() => {
"use strict";
const dropdownFieldCode = "dropdown"
fb.events.fields[dropdownFieldCode].changed = [(state) => {
// dropdownの中身を確認
console.log(state.record[dropdownFieldCode].value)
const d = new Date();
const today = d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate();
const todayFieldCame = "today";
state.record[todayFieldCame].value = today;
return state;
}];
})();
ohyabu
3
ありがとうございます。実装しテスト環境で動作を確認できました。
本番環境はドロップダウンと日付フィールドがたくさんあるのですが
下記のように地道に書いていくしか方法はないのでしょうか・・・
(() => {
“use strict”;
// ドロップダウンと日付フィールドのコード
const dropdownFieldCode = "〇〇〇_担当_0";
const todayFieldCode = "〇〇〇_日付";
// 共通の関数で本日の日付を取得
const getTodayDate = () => {
const d = new Date();
return d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate();
};
// dropdownの変更時イベント
fb.events.fields[dropdownFieldCode].changed = [(state) => {
const dropdownValue = state.record[dropdownFieldCode].value;
if (dropdownValue) {
// 選択されている場合、今日の日付を入力
state.record[todayFieldCode].value = getTodayDate();
} else {
// 未選択の場合、日付を削除
state.record[todayFieldCode].value = '';
}
return state;
}];
// ドロップダウンと日付フィールドのコード
const dropdown2FieldCode = "△△△_担当";
const today2FieldCode = "△△△_日付";
// dropdown2の変更時イベント
fb.events.fields[dropdown2FieldCode].changed = [(state) => {
const dropdown2Value = state.record[dropdown2FieldCode].value;
if (dropdown2Value) {
// 選択されている場合、今日の日付を入力
state.record[today2FieldCode].value = getTodayDate();
} else {
// 未選択の場合、日付を削除
state.record[today2FieldCode].value = '';
}
return state;
}];
続く・・・
aaa
4
たとえば、
(() => {
"use strict";
// 監視したいフィールドと対応する日付フィールドのペア
const fieldsMapping = [
{ fieldToWatch: "dropdown1", todayFieldCode: "today1" },
{ fieldToWatch: "dropdown2", todayFieldCode: "today2" },
{ fieldToWatch: "dropdown3", todayFieldCode: "today3" }
];
const updateTodayField = (state, fieldCode, todayFieldCode) => {
// フィールドの中身を確認
console.log(`Field ${fieldCode} changed:`, state.record[fieldCode].value);
// 今日の日付を設定
const d = new Date();
const today = d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate();
state.record[todayFieldCode].value = today;
return state;
};
// 配列内の全フィールドに対して changed イベントを設定
fieldsMapping.forEach(({ fieldToWatch, todayFieldCode }) => {
fb.events.fields[fieldToWatch].changed = [(state) => updateTodayField(state, fieldToWatch, todayFieldCode)];
});
})();
フォームの前提
system
(system)
Closed
6
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。