新規投稿
フォローする

グループの表示・非表示について

お世話になっております。
同じグループをどちらかの結果に該当した場合表示/非表示を切り替えるようにしたく
回答の条件によって別フィールドの表示/非表示を切り替える
こちらの記事を参考にさせて頂きながら進めておりますが、なぜか
ドロップダウン2のほうはうまく動作しますが、ドロップダウン1のほうが
動作しません。

初歩的なミスかもしれず大変恐縮なのですが、
抜け漏れ等ございましたらご指摘いただけませんでしょうか。
お忙しいところ恐れ入りますがよろしくお願い致します。

 
(function() {
"use strict";
// 追加、編集、詳細画面で適用
varevents = ['app.record.detail.show',
'app.record.create.show',
'app.record.create.change.ドロップダウン1',
'app.record.create.change.ドロップダウン2',
'app.record.edit.change.ドロップダウン1',
'app.record.edit.change.ドロップダウン2']

kintone.events.on(events, function(event) {
varrecord = event.record;

// ドロップダウン1の選択
if (record['ドロップダウン1']['value'] === 'A') {
kintone.app.record.setFieldShown('詳細', true);
}else {
// Noの場合は非表示
kintone.app.record.setFieldShown('詳細', false);
}

// ドロップダウン2の選択
if (record['ドロップダウン2']['value'] === 'A1') {
kintone.app.record.setFieldShown('詳細', true);
}else {
// Noの場合は非表示
kintone.app.record.setFieldShown('詳細', false);
}
});
})();
0

4件のコメント

Avatar
harada

1)

確認です。

表示・非表示にしたフィールドコード「詳細」は、ドロップダウン1、ドロップダウン2の両方から操作したいということで良いのでしょうか?

それとも、詳細1、詳細2があって、それぞれを表示非表示にしたいということでしょうか?それであれば、フィールドコードの指定が違う可能性が高いです。

2)もし、ドロップダウン1,2からそれぞれ同じ「詳細」を表示・非表示にしたいということであれば、ドロップダウン1で表示になりますが、ドロップダウン2のifの部分で表示、非表示を判定してA1でなければ、表示させてしまいます。その後は、ドロップダウン2の設定と同じように見えるはずです。ドロップダウン1の結果を2で上書きしています。「ステップ実行」して見てください。

ドロップダウン1の判定部分に ドロップダウン1がA もしくは ドロップダウン2が A1であれば表示するというif文を作ればよいとおもいます。

if文は直していませんが、

varのあとのスペースが消えていた部分などがありました。整形だけしたものを貼り付けます。

(function() {
  'use strict';
  // 追加、編集、詳細画面で適用
  const events = [
    'app.record.detail.show',
    'app.record.create.show',
    'app.record.create.change.ドロップダウン1',
    'app.record.create.change.ドロップダウン2',
    'app.record.edit.change.ドロップダウン1',
    'app.record.edit.change.ドロップダウン2'
  ];
  kintone.events.on(events, (event) => {
    const record = event.record;
    // ドロップダウン1の選択
    if (record['ドロップダウン1'].value === 'A') {
      kintone.app.record.setFieldShown('詳細', true);
    } else {
      // Noの場合は非表示
      kintone.app.record.setFieldShown('詳細', false);
    }
    // ドロップダウン2の選択
    if (record['ドロップダウン2'].value === 'A1') {
      kintone.app.record.setFieldShown('詳細', true);
    } else {
      // Noの場合は非表示
      kintone.app.record.setFieldShown('詳細', false);
    }
  });
})();

 

 

haradaにより編集されました
0
Avatar
佐々木

ご教示ありがとうございます。
1)の内容について、ドロップダウン1、2からそれぞれ同じ詳細を表示、非表示したいということで間違いありません。
ステップ実行、初めて知りました。大変勉強になります。

ではこの場合ですと、if文に(a || b) の複数条件の処理をさせるという理解であっていますでしょうか?
→(追記)無事動作させることができました!ありがとうございます!!

また、大変初歩的なご質問で申し訳ないのですが、回答の条件によって別フィールドの表示/非表示を切り替える
こちらの記事を参考にして作成したのですが、ここにはreturn eventの記載がないのですが
今回必要なのはなぜなのでしょうか。

ご丁寧にコードまで整形して作成いただきありがとうございます。
引き続き勉強させて頂きます。

佐々木により編集されました
0
Avatar
harada

また、大変初歩的なご質問で申し訳ないのですが、回答の条件によって別フィールドの表示/非表示を切り替える
こちらの記事を参考にして作成したのですが、ここにはreturn eventの記載がないのですが
今回必要なのはなぜなのでしょうか。

はじめに書き込んだときに、何も考えずに return eventを入れていました。

しかし、

  • return eventがなくても動作している
  • 質問者からもドロップダウン2は動く

という話もあり回答を書き換えました。

フィールドの値とフィールドそのものの表示・非表示が違うのかとおもったのですが、

フィールドの表示/非表示 – cybozu developer network
https://developer.cybozu.io/hc/ja/articles/360015513211-%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

をみると return eventしていました。違いは、わかりませんでした。

参考:

https://developer.cybozu.io/hc/ja/articles/201941984#step4

haradaにより編集されました
0
Avatar
佐々木

親切にご回答いただきありがとうございました!
まだまだわからないことばかりなので今後もこちらで勉強させて頂きます。
参考のURLまでありがとうございます。

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