お世話になります。
初心者で恐れ入ります。
https://developer.cybozu.io/hc/ja/articles/202377614
を参照に診察用で試しに使わせて頂ております。
一覧の画面で2,3,4,5番の質問にあると選択し関連項目追加しました。その後編集でないに変更したら→すべての覧ではあると選択したところのデータがすべて残ってしまい、CSVで書き出して使いたいですが、どこまで正しいデータとなるかということになりますので、解決案やヒントなどあるようでしたら、ご教示頂けますでしょうか。
宜しくお願い致します。
goro さん
項目を非表示にしたタイミングで、項目の値をクリアされたらいかがでしょうか?
イベント処理終了時に、return event; を行うと画面に反映されます。
(app.record.detail.show の場合は、return event;でも反映されません)
一覧編集に関しては、非表示の制御が面倒なので、かわりに編集不可にします。
(function() {
"use strict";
//レコードの追加、編集、詳細画面で適用する
var events = ['app.record.detail.show',
'app.record.create.show',
'app.record.create.change.past',
'app.record.create.change.radio2',
'app.record.create.change.radio3',
'app.record.create.change.radio4',
'app.record.create.change.radio5',
'app.record.edit.show',
'app.record.edit.change.past',
'app.record.edit.change.radio2',
'app.record.edit.change.radio3',
'app.record.edit.change.radio4',
'app.record.edit.change.radio5'];
kintone.events.on(events, function(event) {
var record = event.record;
//1問目で「その他」が選択された場合は「その他」フィールドを表示する
var past = record['past']['value'];
if (past.indexOf('その他') >= 0) {
kintone.app.record.setFieldShown('other', true);
}
else {
kintone.app.record.setFieldShown('other', false);
record['other']['value'] = '';
}
//2問目の回答に応じて「予防接種名」フィールドの表示、非表示を切り替える
if (record['radio2']['value'] === 'ある') {
kintone.app.record.setFieldShown('vaccination', true);
}else {
//「ない」の場合は非表示
kintone.app.record.setFieldShown('vaccination', false);
record['vaccination']['value'] = '';
}
//3問目の回答に応じて「病名」「発症した時期」フィールドの表示、非表示を切り替える
if (record['radio3']['value'] === 'いいえ') {
kintone.app.record.setFieldShown('disease', false);
kintone.app.record.setFieldShown('date3', false);
record['disease']['value'] = '';
record['date3']['value'] = '';
}else {
//「はい」の場合は「病名」「時期」を表示する
kintone.app.record.setFieldShown('disease', true);
kintone.app.record.setFieldShown('date3', true);
}
//4問目の回答に応じて「アレルギーの原因」「症状」フィールドの表示、非表示を切り替える
if (record['radio4']['value'] === 'ない') {
kintone.app.record.setFieldShown('cause', false);
kintone.app.record.setFieldShown('symptom', false);
record['cause']['value'] = '';
record['symptom']['value'] = '';
}else {
//「ある」の場合は「病名」「時期」を表示する
kintone.app.record.setFieldShown('cause', true);
kintone.app.record.setFieldShown('symptom', true);
}
//5問目の回答に応じて「詳細」フィールドの表示、非表示を切り替える
if (record['radio5']['value'] === 'ない') {
kintone.app.record.setFieldShown('detail', false);
record['detail']['value'] = '';
}else {
//「ある」の場合は「病名」「時期」を表示する
kintone.app.record.setFieldShown('detail', true);
}
return event;
});
//レコードの一覧編集画面で適用する
var indexEvents = ['app.record.index.edit.show',
'app.record.index.edit.change.past',
'app.record.index.edit.change.radio2',
'app.record.index.edit.change.radio3',
'app.record.index.edit.change.radio4',
'app.record.index.edit.change.radio5'];
kintone.events.on(indexEvents, function(event) {
var record = event.record;
//1問目で「その他」が選択された場合は「その他」フィールドを編集可にする
var past = record['past']['value'];
if (past.indexOf('その他') >= 0) {
record['other']['disabled'] = false;
}
else {
record['other']['disabled'] = true;
record['other']['value'] = '';
}
//2問目の回答に応じて「予防接種名」フィールドの編集可を切り替える
if (record['radio2']['value'] === 'ある') {
record['vaccination']['disabled'] = false;
}else {
//「ない」の場合は非表示
record['vaccination']['disabled'] = true;
record['vaccination']['value'] = '';
}
//3問目の回答に応じて「病名」「発症した時期」フィールドの編集可を切り替える
if (record['radio3']['value'] === 'いいえ') {
record['disease']['disabled'] = true;
record['date3']['disabled'] = true;
record['disease']['value'] = '';
record['date3']['value'] = '';
}else {
//「はい」の場合は「病名」「時期」を表示する
record['disease']['disabled'] = false;
record['date3']['disabled'] = false;
}
//4問目の回答に応じて「アレルギーの原因」「症状」フィールドの編集可を切り替える
if (record['radio4']['value'] === 'ない') {
record['cause']['disabled'] = true;
record['symptom']['disabled'] = true;
record['cause']['value'] = '';
record['symptom']['value'] = '';
}else {
//「ある」の場合は「病名」「時期」を表示する
record['cause']['disabled'] = false;
record['symptom']['disabled'] = false;
}
//5問目の回答に応じて「詳細」フィールドの編集可を切り替える
if (record['radio5']['value'] === 'ない') {
record['detail']['disabled'] = true;
record['detail']['value'] = '';
}else {
//「ある」の場合は「病名」「時期」を表示する
record['detail']['disabled'] = false;
}
return event;
});
})();