ドロップダウンの中のドロップダウン値によるエラー表示をさせたい

お世話になっております。

ドロップダウンの値に応じて、フィールドコードの制御(必須項目化)を行いたい。を参照に項目の多いアプリを作成しております。以下のエラーを出したいですが、どなたかご教示いただけますでしょうか?どうぞよろしくお願い致します。

コードがうまく書けないところ

分類:bの時、bbの選択によってエラー表示させる

詳細:bb1​:arrow_right:bbb1 ; bb2​:arrow_right:bbb2 ; bb3​:arrow_right:bbb3

分類:a&cなら以下のコードで動いております。bの時bbは必須になりますが、bb1ならbbb1が必須になるというのができなくて・・

(function () {
"use strict";

var fieldsCtl = {
'a': {
'aa': true,
},
//bb以降が予想通り動かない・・
'b': {
'bb':{
'bb1': {
'bbb1': true,
},
'bb2':{
'bbb2': true,
},
'bb3':{
'bbb3': true,
},
}
},
'c': {
'cc': true,
},

}

var events = ['app.record.edit.change.分類' ,'app.record.create.change.分類','app.record.index.edit.change.分類',
 'app.record.edit.show','app.record.create.show','app.record.index.edit.show'
];

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

if (record['分類'].value) {
var ctl1 = fieldsCtl[record['分類'].value];
var fkeys = Object.keys(ctl1);
fkeys.map(function(fcode) {
record[fcode]['disabled'] = !ctl1[fcode];
if (!ctl1[fcode]) {
record[fcode].value = '';
}
});
}

return event;
});

kintone.events.on(['app.record.edit.submit','app.record.create.submit', 'app.record.index.edit.submit'], function(event){
var record = event.record;

if (record['分類'].value) {
var ctl1 = fieldsCtl[record['分類'].value];
var fkeys = Object.keys(ctl1);
fkeys.map(function(fcode) {
record[fcode]['disabled'] = !ctl1[fcode];
if (ctl1[fcode]) {
if (!record[fcode].value) {
record[fcode]['error'] = '必須項目!';
event.error = '必須項目 エラー';
}
}
else {
record[fcode].value = '';
}
});
}

return event;
});

})();

現状のコードとは全然違いますが一応それっぽい動きにはなったので参考までに。。。

(function () {
"use strict";

const fields1 = ["aa", "bb", "cc"];
const fields2 = ["bbb1", "bbb2", "bbb3"];


kintone.events.on(['app.record.edit.change.分類' ,'app.record.create.change.分類',
'app.record.edit.change.bb', 'app.record.create.change.bb'], function(event) {
const record = event.record;

fields1.forEach(function(val) {
record[val].disabled = true;
if(val.indexOf(record.分類.value) !== -1) {
record[val].disabled = false;
}
});
fields2.forEach(function(val) {
record[val].disabled = true;
if(val.indexOf(record.bb.value) !== -1) {
record[val].disabled = false;
}
});
return event;
});

kintone.events.on(['app.record.edit.submit','app.record.create.submit', 'app.record.index.edit.submit'], function(event) {
const record = event.record;

fields1.forEach(function(val) {
record[val].error = null;
if(val.indexOf(record.分類.value) !== -1) {
record[val].error = 'エラー';
if(record[val].value) {
record[val].error = null;
}
}
});
fields2.forEach(function(val) {
record[val].error = null;
if(val.indexOf(record.bb.value) !== -1) {
record[val].error = 'エラー';
if(record[val].value) {
record[val].error = null;
}
}
});
return event;
});
})();

TK 様

お世話になっております。

ご教授いただいたコードで動きの確認までできました。

誠にありがとうございます。