新規投稿
フォローする

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

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

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

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

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

 

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

→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);
}

});
})();
0

2件のコメント

Avatar
PV

①に関しては、最後に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;
});

 

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

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

0
Avatar
tktktk

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

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

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

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

0
サインインしてコメントを残してください。