ラジオボタンの選択によって表示させるフィールドの必須入力を動的に変えたい。

ラジオボタンの選択によって、表示するフィールドを切り替えつつ(グループ設定)
選択されたラジオボタンに紐づくフィールドのみ必須入力にすることは可能でしょうか。生成AIで何回かコードを書いてもらい動作検証しているのですが、うまくいかず。
何かご教示いただければと。よろしくお願いいたします。

(function() {
  'use strict';
  
  // 必須解除のマッピング
  const requiredFieldMapping = {
    '不具合報告(営業所申請分)': [
      '文字列__1行__2',
      '日付_1',
      '文字列__1行__1',
      '数値_0',
      '数値',
      'ラジオボタン',
      '文字列__1行__3',
      '日付_2',
      '数値_1'
    ],
    '工事提案・見積書提出(●●●不動産申請分)': [
      '文字列__1行__3',
      '日付_2',
      '数値_1'
    ]
  };
  
  // 表示時とラジオボタン変更時
  const events = [
    'app.record.create.show',
    'app.record.edit.show',
    'app.record.create.change.ラジオボタン_0',
    'app.record.edit.change.ラジオボタン_0'
  ];
  
  kintone.events.on(events, function(event) {
    const selectedOption = event.record['ラジオボタン_0'].value;
    
    // 選択されたオプションに対応するフィールドを必須解除
    if (selectedOption && requiredFieldMapping[selectedOption]) {
      const fieldsToUnrequire = requiredFieldMapping[selectedOption];
      
      fieldsToUnrequire.forEach(function(fieldCode) {
        if (event.record[fieldCode]) {
          event.record[fieldCode].required = false;
        }
      });
    }
    
    return event;
  });
  
  // 保存時のバリデーション処理
  const submitEvents = [
    'app.record.create.submit',
    'app.record.edit.submit'
  ];
  
  kintone.events.on(submitEvents, function(event) {
    const selectedOption = event.record['ラジオボタン_0'].value;
    
    // 選択されたオプションに対応するフィールドのエラーをクリア
    if (selectedOption && requiredFieldMapping[selectedOption]) {
      const fieldsToUnrequire = requiredFieldMapping[selectedOption];
      
      fieldsToUnrequire.forEach(function(fieldCode) {
        if (event.record[fieldCode] && event.record[fieldCode].error) {
          event.record[fieldCode].error = null;
        }
      });
    }
    
    return event;
  });
  
  // バリデーション処理
  const validateEvents = [
    'app.record.create.validate',
    'app.record.edit.validate'
  ];
  
  kintone.events.on(validateEvents, function(event) {
    const selectedOption = event.record['ラジオボタン_0'].value;
    
    // 選択されたオプションに対応するフィールドのバリデーションエラーを削除
    if (selectedOption && requiredFieldMapping[selectedOption] && event.errors) {
      const fieldsToUnrequire = requiredFieldMapping[selectedOption];
      
      // エラー配列をフィルタリングしてエラーを削除
      for (let i = event.errors.length - 1; i >= 0; i--) {
        const error = event.errors[i];
        
        // フィールドコードを抽出する処理
        const fieldId = error.elementId || '';
        let fieldCode = fieldId.replace(/^.*?field-/, '').replace(/-.*$/, '');
        
        // 数値_0のようなフィールドコードに対応
        if (fieldCode.match(/^[^-]+-[^-]+$/)) {
          fieldCode = fieldCode.replace(/-/, '_');
        }
        
        // 必須解除対象のフィールドのエラーを削除
        if (fieldsToUnrequire.includes(fieldCode)) {
          event.errors.splice(i, 1);
        }
      }
    }
    
    return event;
  });
})();

ご回答いただきありがとうございます。
生成AIに頼り切っておりました。自身でも
把握いたします。ありがとうございます!!

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