FormBridgeのJavaScriptサンプルにバグ?がありましたので、ご報告です。
JavaScript カスタマイズの説明ページ
の
form.field.change.(fieldCode).(fieldCodeInTable)
の項にあるサンプルスクリプトにバグがあります。
rowIndex を指定すべきところに ”0” が書かれているので、このままだと先頭行しか正しく処理されません。
ゼロのところを rowIndex に変えると正常に動作します。
サイト上にあるサンプルコードは
formBridge.events.on('form.field.change.subtable.product_category', function (context) {
const category = context.value;
const currentRow = formBridge.fn.getRecord().subtable.value[context.rowIndex];
const expirationDate = currentRow.value.expiration_date.value;
if (category === '食品' && expirationDate === '') {
context.setSubtableFieldValueError(
'subtable',
'expiration_date',
0,
'食品の場合は期限を入力してください。'
);
} else {
// エラーメッセージをクリア
context.setSubtableFieldValueError('subtable', 'expiration_date', 0, null);
}
});
ですが、これを下のように変更します。
formBridge.events.on('form.field.change.subtable.product_category', function (context) {
const category = context.value;
const currentRow = formBridge.fn.getRecord().subtable.value[context.rowIndex];
const expirationDate = currentRow.value.expiration_date.value;
if (category === '食品' && expirationDate === '') {
context.setSubtableFieldValueError(
'subtable',
'expiration_date',
context.rowIndex,
'食品の場合は期限を入力してください。'
);
} else {
// エラーメッセージをクリア
context.setSubtableFieldValueError('subtable', 'expiration_date', context.rowIndex, null);
}
});
トヨクモさんの問い合わせページに報告させていただいておりますので、本家サイトが訂正されるまでのご参考に。