新バージョンのフォームブリッジで「開始時刻」が「終了時刻」より後になるような入力がされた場合、エラー表示を出したいです。
実行したコードは下記のとおりですが、うまくいかず、原因はこちら↓とのこと。どのように 修正すればいいかご教示いただけると助かります。
Uncaught TypeError: Cannot read properties of undefined (reading ‘fields’)
実行したコード
(function() {
"use strict";
const START_TIME_FIELD_CODE = '開始時刻';
const END_TIME_FIELD_CODE = '終了時刻';
function validateTimeRange(currentContext) {
// ここを context.record.fields に変更
const fields = currentContext.record.fields;
if (!fields) {
// エラーログは開発時のみで、本番環境では不要な場合があります
console.error("Error: 'fields' object not found in currentContext.record. Make sure context.record.fields is available.");
return currentContext;
}
const startTime = fields[START_TIME_FIELD_CODE] ? fields[START_TIME_FIELD_CODE].value : '';
const endTime = fields[END_TIME_FIELD_CODE] ? fields[END_TIME_FIELD_CODE].value : '';
const startField = fields[START_TIME_FIELD_CODE];
const endField = fields[END_TIME_FIELD_CODE];
if (!startField || !endField) {
console.warn(`Warning: One or both time fields (${START_TIME_FIELD_CODE}, ${END_TIME_FIELD_CODE}) not found.`);
return currentContext;
}
if (startTime && endTime) {
if (startTime >= endTime) {
startField.error = '開始時刻は終了時刻より前に設定してください。';
endField.error = '終了時刻は開始時刻より後に設定してください。';
} else {
startField.error = '';
endField.error = '';
}
} else {
// 片方または両方が未入力の場合、エラーをクリア
startField.error = '';
endField.error = '';
}
return currentContext;
}
formBridge.events.on(`form.field.change.${START_TIME_FIELD_CODE}`, function(context) {
return validateTimeRange(context);
});
formBridge.events.on(`form.field.change.${END_TIME_FIELD_CODE}`, function(context) {
return validateTimeRange(context);
});
})();