# 回答の条件によって別フィールドの表示/非表示を切り替える　のカスタマイズ

**URL:** <https://community.cybozu.dev/t/topic/6949>\
**Category:** kintone 開発相談\
**Created:** [2021 年 1 月 22 日午前 1:44 UTC](https://community.cybozu.dev/t/topic/6949 "2021-01-22T01:44:41Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account2241](https://avatars.discourse-cdn.com/v4/letter/l/8dc957/32.png) [@Legacy\_Account2241](https://community.cybozu.dev/u/Legacy_Account2241)\
**Post date:** [2021 年 1 月 22 日午前 1:44 UTC](https://community.cybozu.dev/t/topic/6949/1 "2021-01-22T01:44:41Z")

</div>

> [https://developer.cybozu.io/hc/ja/articles/202377614-%E5%9B%9E%E7%AD%94%E3%81%AE%E6%9D%A1%E4%BB%B6%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E5%88%A5%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%AE%E8%A1%A8%E7%A4%BA-%E9%9D%9E%E8%A1%A8%E7%A4%BA%E3%82%92%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%82%8B](https://community.cybozu.dev/hc/ja/articles/202377614-%E5%9B%9E%E7%AD%94%E3%81%AE%E6%9D%A1%E4%BB%B6%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E5%88%A5%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%AE%E8%A1%A8%E7%A4%BA-%E9%9D%9E%E8%A1%A8%E7%A4%BA%E3%82%92%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%82%8B)

こちらのコードを変更して使いたいのですが

①「radio（＝振休取得の有無）」を「あり」にしてデータを入力→「なし」に変更→「あり」で再表示させた際に「振休日1,2,3」のデータが消えるようにしたい。

→こちらはリンク下のフィードバックにそのようなことが書いてあったのでそのままコードを書いてみましたがデータは消えませんでした。

&nbsp;

②レコードの保存 ができない

→Chromeのコンソールには「Uncaught TypeError: Cannot read property ‘value’ of undefined」こちらのエラーが出ていました。

解決策・コードがお分かりの方がおられましたらどうかご教示ください。

```
/*
* 回答の条件によって別フィールドの表示/非表示を切り替えるサンプルプログラム
* Copyright (c) 2014 Cybozu
*
* Licensed under the MIT License
*/
(function() {
"use strict";

//レコードの追加、編集、詳細画面で適用する
var events = ['app.record.detail.show',
'app.record.create.show',
'app.record.create.change.radio',
'app.record.edit.show',
'app.record.edit.change.radio'];

kintone.events.on(events, function(event) {

var record = event.record;

//"振休取得の有無"の回答に応じて「振休日」フィールド3つの表示、非表示を切り替える
if (record['radio']['value'] === 'なし') {
kintone.app.record.setFieldShown('振休日1', false);
kintone.app.record.setFieldShown('振休日2', false);
      kintone.app.record.setFieldShown('振休日3', false);
//非表示にした場合にデータを空にする
      record['振休日1']['value'] = "";
   record['振休日2']['value'] = "";
   record['振休日3']['value'] = "";
} else {
//「あり」の場合は「振休日」フィールド3つを表示する
kintone.app.record.setFieldShown('振休日1', true);
kintone.app.record.setFieldShown('振休日2', true);
      kintone.app.record.setFieldShown('振休日3', true);
}

});
})();

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2017](https://avatars.discourse-cdn.com/v4/letter/l/f19dbf/32.png) [@Legacy\_Account2017](https://community.cybozu.dev/u/Legacy_Account2017)\
**Post date:** [2021 年 1 月 22 日午前 5:43 UTC](https://community.cybozu.dev/t/topic/6949/2 "2021-01-22T05:43:28Z")

</div>

①に関しては、最後にeventをリターンしていない事が原因のように思われます。

event.recordの値を変更した場合、return event;をする必要があります。

kintone.events.on(events, function(event) {  
var record = event.record;  
//"振休取得の有無"の回答に応じて「振休日」フィールド3つの表示、非表示を切り替える  
if (record[‘radio’][‘value’] === ‘なし’) {  
kintone.app.record.setFieldShown(‘振休日1’, false);  
kintone.app.record.setFieldShown(‘振休日2’, false);  
kintone.app.record.setFieldShown(‘振休日3’, false);  
//非表示にした場合にデータを空にする  
record[‘振休日1’][‘value’] = “”;  
record[‘振休日2’][‘value’] = “”;  
record[‘振休日3’][‘value’] = “”;  
} else {  
//「あり」の場合は「振休日」フィールド3つを表示する  
kintone.app.record.setFieldShown(‘振休日1’, true);  
kintone.app.record.setFieldShown(‘振休日2’, true);  
kintone.app.record.setFieldShown(‘振休日3’, true);  
}

return event;  
});

&nbsp;

②に関しては、今回掲載のコード以外に問題があるように思われます。

今回掲載以外のカスタマイズ、プラグイン等を外しても同じエラーになりますか？

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2241](https://avatars.discourse-cdn.com/v4/letter/l/8dc957/32.png) [@Legacy\_Account2241](https://community.cybozu.dev/u/Legacy_Account2241)\
**Post date:** [2021 年 1 月 25 日午前 8:28 UTC](https://community.cybozu.dev/t/topic/6949/3 "2021-01-25T08:28:10Z")

</div>

PV様 ありがとうございます。

ご回答を頂く前にアプリの更新を何度か掛けたところ、①・②ともに問題なく作動しました。

①に関してはしっかりとreturnのコードを追加させて頂き、しばらく運用してみます。

お時間割いていただきありがとうございました。
