フィールド値入力に応じたテーブル行の追加と値入力について

Javascript初心者です。

添付の図で、[実施費用]と[完了月]を入力すると、テーブルに新たに1行追加し、入力された値を反映するようにしたいです。

例えば、[実施費用]に「300」、[完了月]に「10月」が入力されると、テーブルに1行追加されて、10月の欄に300が入り、10月以外は0が入るようにしたいです。

既存のテーブル行が「予定」、追加される行が「実績」というテーブルを作成するイメージです。

アドバイスよろしくお願いいたします。

nagayama様

お世話になっております。
cstapの江田です。

以下のコードで実装できるかと思います。
ただし、フィールドコードは
実施費用(単位千円) => 実施費用
完了月 => 完了月
テーブル => Table
x月 => _x月
としております。

(function () {
"use strict";
kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], function(event) {
var record = event.record;
if(record.実施費用.value && record.完了月.value){
var newRow = {};
for(var month=1; month<=12; month++){
if(month+"月" == record.完了月.value){
newRow["_"+month+"月"] = {
type: "NUMBER",
value: record.実施費用.value
}
}else{
newRow["_"+month+"月"] = {
type: "NUMBER",
value: 0
}
}
}
}
record.Table.value.push({value:newRow});
return event;
});
})();

江田様

お世話になります。

ありがとうございます。お陰様で、希望している機能を実装出来ました。

御礼が遅くなり、申し訳ありませんでした。

恐縮ですが、追加でご相談させていただければと思います。

今回の実装によって、行が二つになった状態で、[実施費用]と[完了月]のフィールド値を更新すると、

表の2行目も更新されるようにしたいです。

色々試していますが、上手くいかないので、再度アドバイスをいただけないでしょうか。

申し訳ありませんが、よろしくお願いいたします。

 

nagayama様

お世話になっております。

以下のコードで実装できるかと思います。

(function () {
"use strict";
kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], function(event) {
var record = event.record;
if(record.Table.value.length == 2){
for(var month=1; month<=12; month++){
if(month+"月" == record.完了月.value){
record.Table.value[1].value["_"+month+"月"].value = record.実施費用.value;
}else{
record.Table.value[1].value["_"+month+"月"].value = 0;
}
}
}else if(record.実施費用.value && record.完了月.value){
var newRow = {};
for(var month=1; month<=12; month++){
if(month+"月" == record.完了月.value){
newRow["_"+month+"月"] = {
type: "NUMBER",
value: record.実施費用.value
}
}else{
newRow["_"+month+"月"] = {
type: "NUMBER",
value: 0
}
}
}
record.Table.value.push({value:newRow});
}
return event;
});
})();

江田様

お世話になります。

ありがとうございます。試してみましたところ、希望どおりの機能が実装できました。

とても助かりました。