ドロップダウンの値によって非表示

背景・実現したいこと

 LBY契約商材がプロバイダ 可変/保守を選択した時のみプロバイダ会社/プロバイダプランを表示するようにしたいのですが、下記ソースですと、選択しても表示されません。

どこを修正すればいいでしょうか?

エラー情報 (開発者ツールのコンソール)

 

利用したソースコード

 

(function() {
  ‘use strict’;

   var events1 = [
    ‘app.record.create.show’,    
    ‘app.record.create.change.LBY契約商材’,    
    ‘app.record.edit.show’,
    ‘app.record.edit.change.LBY契約商材’,
    ‘app.record.detail.show’,
   ];

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

    kintone.app.record.setFieldShown(‘プロバイダ会社’, false);
    kintone.app.record.setFieldShown(‘プロバイダプラン’, false);

    var record = event.record[‘LBY契約商材’].value;

    switch (record) {
      case ‘プロバイダ 可変/保守’ :
        kintone.app.record.setFieldShown(‘プロバイダ会社’, true);
    kintone.app.record.setFieldShown(‘プロバイダプラン’, true);
break;
}
  });
})();

   var events1 = [
    'app.record.create.show',    
    'app.record.create.change.LBY契約商材',    
    'app.record.edit.show',
    'app.record.edit.change.LBY契約商材',
    'app.record.detail.show',
   ];
// 略
   var record = event.record['LBY契約商材'].value;

 var events1 = [
  'app.record.create.change.LBY契約商材',    
  'app.record.edit.change.LBY契約商材',
   ];
   // 略
 var record = event.changes.row.value['LBY契約商材'].value;

サブテーブル上のフィールドはevent.record.フィールドコード.valueとは指定方法が異なります。サブテーブルは値が配列になるので、ループで処理をさせるか、event.changes.rowまたはevent.changes.fieldを使うと良いでしょう(参考)。

ただし、これらはchangeイベントのみで使用できるものなので、showイベントでも同様に指定する場合はサブテーブルのループを回すか、find()等を使うか、工夫が必要です。

回答ありがとうございます。

下記ソースに変更致しましたが、表示されません。

どこを修正すればいいでしょうか?

 

 

 

(function() {
  ‘use strict’;

   var events1 = [
    ‘app.record.create.change.LBY契約商材’,    
    ‘app.record.edit.change.LBY契約商材’,
   ];
   

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

    kintone.app.record.setFieldShown(‘プロバイダ会社’, false);
    kintone.app.record.setFieldShown(‘プロバイダプラン’, false);
    var record = event.changes.field.value[‘LBY契約商材’].value;

    switch (record) {
      case ‘プロバイダ 可変/保守’ :
        kintone.app.record.setFieldShown(‘プロバイダ会社’, true);
    kintone.app.record.setFieldShown(‘プロバイダプラン’, true);
break;
}
  });
})();

唐木陽平 さま

    var record = event.changes.field.value['LBY契約商材'].value;

  var record = event.changes.field.value;

この場合のfieldは変更したフィールドなので、フィールドコードは必要ありません。個人的にはevent.changes.row.value[‘LBY契約商材’].valueとすることをおすすめします。

 

もう一点追加ですが、

 break;
    }
  });

 break;
    }

return event;
  });

イベントの終わりにはreturn eventをする癖をつけておくことを推奨します。このカスタマイズ自体には影響しない(仮にフィールドの中身を書き換えるようなカスタマイズの場合は必須)ものの、今後同じイベントを使った別のカスタマイズをした際に、そのカスタマイズが動作しなくなります。

  break;
}
return event;
  });

に変更した場合、一番上の

(function() {

にエラー Unmatched’ {'.

と出るのですが、どのように修正すればいいでしょうか?何度もすみません

唐木陽平 さま

括弧が正しく閉じられていないエラーですね。最終行の

})();

は残っていますか?

抜けてました!

設定出来ました、本当にありがとうございました!!

 

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。