新規投稿
フォローする

チェックボックスを選択したら該当箇所の数字の合計数を表示したい

いつも大変お世話になっております。

現在下記のようなアプリを作成しており、

チェックボックスにチェックを入れたら、該当箇所の数字の合計数を『必要部数』欄に表示したいと考えております。

例:レベル1とレベル2のチェックボックスにチェックをいれたら、

  上の数値フィールド内の10と20を足した30を『必要部数』欄に表示。

  ※全体にチェックを入れたら、10~60まで全ての数を足した210を

  『必要部数』欄に表示。

色々と考えてはみましたが、上手くいきませんでした。

お力添えを頂けましたらと思います。

よろしくお願い致します。

0

9件のコメント

Avatar
Teru

こんな感じで実装できると思います。

画面上部のレベル1~レベル0までのフィールドコードはそのまま、

サブテーブル内のレベルのフィールドコードは 「レベル1チェック」のような形にしております。
環境に合わせて変更をお願いいたします。

(function($) {
"use strict";
//イベント記述
var events = ["app.record.create.change.レベル1チェック",
"app.record.edit.change.レベル1チェック",
"app.record.create.change.レベル2チェック",
"app.record.edit.change.レベル2チェック",
"app.record.create.change.レベル3チェック",
"app.record.edit.change.レベル3チェック",
"app.record.create.change.レベル4チェック",
"app.record.edit.change.レベル4チェック",
"app.record.create.change.レベル5チェック",
"app.record.edit.change.レベル5チェック",
"app.record.create.change.レベル0チェック",
"app.record.edit.change.レベル0チェック"];

kintone.events.on(events, function(event) {
var record = event.record;
var level1 = parseInt(record.レベル1.value);
var level2 = parseInt(record.レベル2.value);
var level3 = parseInt(record.レベル3.value);
var level4 = parseInt(record.レベル4.value);
var level5 = parseInt(record.レベル5.value);
var level0 = parseInt(record.レベル0.value);
var row = event.changes.row;
var total = 0;
if(row.value.レベル1チェック.value.indexOf("レベル1") >= 0) {
total += level1;
}
if(row.value.レベル2チェック.value.indexOf("レベル2") >= 0) {
total += level2;
}
if(row.value.レベル3チェック.value.indexOf("レベル3") >= 0) {
total += level3;
}
if(row.value.レベル4チェック.value.indexOf("レベル4") >= 0) {
total += level4;
}
if(row.value.レベル5チェック.value.indexOf("レベル5") >= 0) {
total += level5;
}
if(row.value.レベル0チェック.value.indexOf("レベル0") >= 0) {
total += level0;
}
row.value.必要部数.value = total;
return event;

});
});
0
Avatar
Teru

失礼しました。全体の対応ができていませんでした。

jQuery.noConflict();
(function($) {
"use strict";
var events = ["app.record.create.change.全体",
"app.record.edit.change.全体",
"app.record.create.change.レベル1チェック",
"app.record.edit.change.レベル1チェック",
"app.record.create.change.レベル2チェック",
"app.record.edit.change.レベル2チェック",
"app.record.create.change.レベル3チェック",
"app.record.edit.change.レベル3チェック",
"app.record.create.change.レベル4チェック",
"app.record.edit.change.レベル4チェック",
"app.record.create.change.レベル5チェック",
"app.record.edit.change.レベル5チェック",
"app.record.create.change.レベル0チェック",
"app.record.edit.change.レベル0チェック"];

kintone.events.on(events, function(event) {
var record = event.record;
var level1 = parseInt(record.レベル1.value);
var level2 = parseInt(record.レベル2.value);
var level3 = parseInt(record.レベル3.value);
var level4 = parseInt(record.レベル4.value);
var level5 = parseInt(record.レベル5.value);
var level0 = parseInt(record.レベル0.value);
var row = event.changes.row;
var total = 0;
var all = level1 + level2 + level3 + level4 + level5 + level0;
console.log(all);
if(row.value.全体.value.indexOf("全体") >=0) {
row.value.必要部数.value = all;
return event;
} else {

if(row.value.レベル1チェック.value.indexOf("レベル1") >= 0) {
total += level1;
}
if(row.value.レベル2チェック.value.indexOf("レベル2") >= 0) {
total += level2;
}
if(row.value.レベル3チェック.value.indexOf("レベル3") >= 0) {
total += level3;
}
if(row.value.レベル4チェック.value.indexOf("レベル4") >= 0) {
total += level4;
}
if(row.value.レベル5チェック.value.indexOf("レベル5") >= 0) {
total += level5;
}
if(row.value.レベル0チェック.value.indexOf("レベル0") >= 0) {
total += level0;
}
}
row.value.必要部数.value = total;
return event;
});
})(jQuery);
0
Avatar
Natsumi

Teru様

 

早々のご連絡誠にありがとうございます!

さっそく実装してみましたが…必要部数欄に合計の値は出ませんでした。

下記の様にしてみましたがどこか間違っているところがありますでしょうか?

何度も申し訳ございませんが、再度ご教示頂けましたらと思います。

よろしくお願い致します。

 

◎テーブル外のレベル1~レベル0は、フィールドコードを「レベル1元~レベル0元」にしています。

 テーブル内の全体~レベル0までのチェックボックスのフィールドコードは、「全体・レベル1~レベル0」にしています。

(function($) {
"use strict";
var events = ["app.record.create.change.全体",
"app.record.edit.change.全体",
"app.record.create.change.レベル1",
"app.record.edit.change.レベル1",
"app.record.create.change.レベル2",
"app.record.edit.change.レベル2",
"app.record.create.change.レベル3",
"app.record.edit.change.レベル3",
"app.record.create.change.レベル4",
"app.record.edit.change.レベル4",
"app.record.create.change.レベル5",
"app.record.edit.change.レベル5",
"app.record.create.change.レベル0",
"app.record.edit.change.レベル0"];

kintone.events.on(events, function(event) {
var record = event.record;
var level1 = parseInt(record.レベル1元.value);
var level2 = parseInt(record.レベル2元.value);
var level3 = parseInt(record.レベル3元.value);
var level4 = parseInt(record.レベル4元.value);
var level5 = parseInt(record.レベル5元.value);
var level0 = parseInt(record.レベル0元.value);
var row = event.changes.row;
var total = 0;
var all = level1 + level2 + level3 + level4 + level5 + level0;
console.log(all);
if(row.value.全体.value.indexOf("全体") >=0) {
row.value.必要部数.value = all;
return event;
} else {

if(row.value.レベル1.value.indexOf("レベル1元") >= 0) {
total += level1;
}
if(row.value.レベル2.value.indexOf("レベル2元") >= 0) {
total += level2;
}
if(row.value.レベル3.value.indexOf("レベル3元") >= 0) {
total += level3;
}
if(row.value.レベル4.value.indexOf("レベル4元") >= 0) {
total += level4;
}
if(row.value.レベル5.value.indexOf("レベル5元") >= 0) {
total += level5;
}
if(row.value.レベル0.value.indexOf("レベル0元") >= 0) {
total += level0;
}
}
row.value.必要部数.value = total;
return event;
});

 

0
Avatar
Teru

こちらで如何でしょうか。

(function() {
"use strict";
var events = ["app.record.create.change.全体",
"app.record.edit.change.全体",
"app.record.create.change.レベル1",
"app.record.edit.change.レベル1",
"app.record.create.change.レベル2",
"app.record.edit.change.レベル2",
"app.record.create.change.レベル3",
"app.record.edit.change.レベル3",
"app.record.create.change.レベル4",
"app.record.edit.change.レベル4",
"app.record.create.change.レベル5",
"app.record.edit.change.レベル5",
"app.record.create.change.レベル0",
"app.record.edit.change.レベル0"];

kintone.events.on(events, function(event) {
var record = event.record;
var level1 = parseInt(record.レベル1元.value);
var level2 = parseInt(record.レベル2元.value);
var level3 = parseInt(record.レベル3元.value);
var level4 = parseInt(record.レベル4元.value);
var level5 = parseInt(record.レベル5元.value);
var level0 = parseInt(record.レベル0元.value);
var row = event.changes.row;
var total = 0;
var all = level1 + level2 + level3 + level4 + level5 + level0;
console.log(all);
if(row.value.全体.value.indexOf("全体") >=0) {
row.value.必要部数.value = all;
return event;
} else {

if(row.value.レベル1.value.indexOf("レベル1元") >= 0) {
total += level1;
}
if(row.value.レベル2.value.indexOf("レベル2元") >= 0) {
total += level2;
}
if(row.value.レベル3.value.indexOf("レベル3元") >= 0) {
total += level3;
}
if(row.value.レベル4.value.indexOf("レベル4元") >= 0) {
total += level4;
}
if(row.value.レベル5.value.indexOf("レベル5元") >= 0) {
total += level5;
}
if(row.value.レベル0.value.indexOf("レベル0元") >= 0) {
total += level0;
}
}
row.value.必要部数.value = total;
return event;
})();

 

0
Avatar
Natsumi

Teru様

いつも大変お世話になっております。

ご連絡が遅くなり誠に申し訳ございません。

ご回答頂きありがとうございました。

結果として、『必要部数』欄に数字は出ませんでした…。

デバッグしてみると『SyntaxError: Unexpected end of input』と出るのですが、

色々触ってみても直すことが出来ず…。

誠に申し訳ございませんが、今一度お力添えを頂けませんでしょうか?

よろしくお願い致します。

 

0
Avatar
Teru

Natsumi様

お世話になっております。
失礼いたしました。初歩的な閉じ方のミスです…。
こちらでご確認ください。

(function() {
"use strict";
var events = ["app.record.create.change.全体",
"app.record.edit.change.全体",
"app.record.create.change.レベル1",
"app.record.edit.change.レベル1",
"app.record.create.change.レベル2",
"app.record.edit.change.レベル2",
"app.record.create.change.レベル3",
"app.record.edit.change.レベル3",
"app.record.create.change.レベル4",
"app.record.edit.change.レベル4",
"app.record.create.change.レベル5",
"app.record.edit.change.レベル5",
"app.record.create.change.レベル0",
"app.record.edit.change.レベル0"];

kintone.events.on(events, function(event) {
var record = event.record;
var level1 = parseInt(record.レベル1元.value);
var level2 = parseInt(record.レベル2元.value);
var level3 = parseInt(record.レベル3元.value);
var level4 = parseInt(record.レベル4元.value);
var level5 = parseInt(record.レベル5元.value);
var level0 = parseInt(record.レベル0元.value);
var row = event.changes.row;
var total = 0;
var all = level1 + level2 + level3 + level4 + level5 + level0;
console.log(all);
if(row.value.全体.value.indexOf("全体") >=0) {
row.value.必要部数.value = all;
return event;
} else {

if(row.value.レベル1.value.indexOf("レベル1元") >= 0) {
total += level1;
}
if(row.value.レベル2.value.indexOf("レベル2元") >= 0) {
total += level2;
}
if(row.value.レベル3.value.indexOf("レベル3元") >= 0) {
total += level3;
}
if(row.value.レベル4.value.indexOf("レベル4元") >= 0) {
total += level4;
}
if(row.value.レベル5.value.indexOf("レベル5元") >= 0) {
total += level5;
}
if(row.value.レベル0.value.indexOf("レベル0元") >= 0) {
total += level0;
}
}
row.value.必要部数.value = total;
return event;
});
})();

0
Avatar
Natsumi

Teru様

いつも大変お世話になっております。

早速のご連絡頂き誠にありがとうございます。

上記のように訂正させて頂きましたところ、『全体』の数値(レベル1~レベル0までの合計値)は

『必要部数』に表示されました。

ですが、他をチェックした時(例えばレベル1とレベル2のみをチェックした時にレベル1元とレベル2元の合計値が出る)は

『必要部数』に0しか明記されませんでした…。

もう少し考えてみます。長々とありがとうございました!

0
Avatar
Teru

Natsumi様

お世話になっております。原因がわかりました。
こちらで動かなければ諦めましょう!笑

 

(function() {
"use strict";
var events = ["app.record.create.change.全体",
"app.record.edit.change.全体",
"app.record.create.change.レベル1",
"app.record.edit.change.レベル1",
"app.record.create.change.レベル2",
"app.record.edit.change.レベル2",
"app.record.create.change.レベル3",
"app.record.edit.change.レベル3",
"app.record.create.change.レベル4",
"app.record.edit.change.レベル4",
"app.record.create.change.レベル5",
"app.record.edit.change.レベル5",
"app.record.create.change.レベル0",
"app.record.edit.change.レベル0"];

kintone.events.on(events, function(event) {
var record = event.record;
var level1 = parseInt(record.レベル1元.value);
var level2 = parseInt(record.レベル2元.value);
var level3 = parseInt(record.レベル3元.value);
var level4 = parseInt(record.レベル4元.value);
var level5 = parseInt(record.レベル5元.value);
var level0 = parseInt(record.レベル0元.value);
var row = event.changes.row;
var total = 0;
var all = level1 + level2 + level3 + level4 + level5 + level0;
console.log(all);
if(row.value.全体.value.indexOf("全体") >=0) {
row.value.必要部数.value = all;
return event;
} else {

if(row.value.レベル1.value.indexOf("レベル1") >= 0) {
total += level1;
}
if(row.value.レベル2.value.indexOf("レベル2") >= 0) {
total += level2;
}
if(row.value.レベル3.value.indexOf("レベル3") >= 0) {
total += level3;
}
if(row.value.レベル4.value.indexOf("レベル4") >= 0) {
total += level4;
}
if(row.value.レベル5.value.indexOf("レベル5") >= 0) {
total += level5;
}
if(row.value.レベル0.value.indexOf("レベル0") >= 0) {
total += level0;
}
}
row.value.必要部数.value = total;
return event;
});
})();
0
Avatar
Natsumi

Teru様

いつも大変お世話になっております。

ご連絡頂きありがとうございます。

今回ご教示頂きました通りにさせて頂きましたところ、無事に数字が表示されました!

お忙しい中、長々とお付き合い頂き誠にありがとうございました。

どうしても実装したい機能であった為、本当に助かりました。

 

また何かございましたら、よろしくお願い致します。

本当にありがとうございました!

1
ログインしてコメントを残してください。