開発情報・ナレッジ

投稿者: ShiningStar株式会社 2024年1月26日 (金)

JavaScirptでラジオボタンをドリルダウン表示する

前回の記事 JavaScirptでセレクトをドリルダウン表示する のラジオボタンバージョンとなります。


JavaScriptソース

document.addEventListener('DOMContentLoaded', function() {
  const drdowField = [
    ['f01','f02', { 1:[1,2,3], 2:[4,5,6], 3:[7,8,9] }],
    ['f02','f03', { 1:[1,2,3], 2:[4,5,6], 3:[7,8,9] }],
    ['f04','f05', { 1:[1,2,3], 2:[4,5,6], 3:[7,8,9] }],
    ['f05','f06', { 1:[1,2,3], 2:[4,5,6], 3:[7,8,9] }]
  ];

  drdowField.forEach(([parentName, childName, optionsMap]) => {
    const parentRadios = document.querySelectorAll(`input[name="${parentName}"]`);
    parentRadios.forEach(radio => {
      radio.addEventListener('change', () => {
        updateChildOptions(childName, optionsMap[radio.value]);
      });
    });

    updateChildOptions(childName, null); // 初期状態の設定
  });

  function updateChildOptions(childName, values) {
    const childRadios = document.querySelectorAll(`input[name="${childName}"]`);
    childRadios.forEach(radio => {
      const label = radio.closest('.sp-form-selection');
      if (label) {
        if (values && values.includes(parseInt(radio.value))) {
          label.style.display = '';
        } else {
          label.style.display = 'none';
        }
      }
    });
  }
});

使い方

SPIRALの設定例等は全て同じで
フォームを作成する際に全てラジオボタンで設定してください。


こちらの例では業種、職種、役職がf01やf02,f03に当たる項目になります。
その後JavaScriptタブにてソースの設定をしてください。
ソース内のドリルダウンの親子関係を指定するdrdowFieldの仕様はプルダウンのときと同じなので、前回の記事を確認してください。
解決しない場合はこちら コンテンツに関しての
要望はこちら