Blog

コンタクトフォーム7 「その他」表示/非表示

2024年10月24日

コンタクトフォームでその他を表示したら表示させる方法を備忘録として記載します。

<dt class="order-form">趣味</dt>
  <dd class="body-form">
   <div>[radio radio-syumi use_label_element default:1 "映画" "カラオケ" "ドライブ" "その他"]</div>
 <div id="other-field1" style="display: none;">
    [number other-layer1 id:other-layer1 class:free  placeholder "趣味を入力"]
 </div>
 </dd>

<dt class="order-form">夢</dt>
  <dd class="body-form">
   <div>[radio radio-dream use_label_element default:1 "警察官" "保育士" "先生" "その他"]</div>
 <div id="other-field2" style="display: none;">
    [number other-layer2 id:other-layer2 class:free  placeholder "夢を入力"]
 </div>
 </dd>
document.addEventListener('DOMContentLoaded', function () {
  const radioButtons1 = document.querySelectorAll('input[name="radio-syumi"]');
  const radioButtons2 = document.querySelectorAll('input[name="radio-dream"]');
  const otherField1 = document.getElementById('other-field1');
  const otherField2 = document.getElementById('other-field2');

radioButtons1.forEach(radio => {
    radio.addEventListener('change', function () {
      if (this.value === "その他") {  // "Other"を選択した場合
        otherField1.style.display = 'block';  // 表示
      } else {
        otherField1.style.display = 'none';   // 非表示
      }
    });
  });
  radioButtons2.forEach(radio => {
    radio.addEventListener('change', function () {
      if (this.value === "その他") {  // "Other"を選択した場合
        otherField2.style.display = 'block';  // 表示
      } else {
        otherField2.style.display = 'none';   // 非表示
      }
    });
  });

});

その他をチェックしたら表示させない方法

<dt class="order-form">例</dt>
    <dd class="body-form">
   <ul class="o-fle">
    <li>[radio radio-alphabet use_label_element default:1 "A" "B" "C" "その他"]</li>
    <li class="orderalpha">[radio radio-registcolor use_label_element "a" "b" "c" "d"]</li>
   </ul>
  </dd>
document.addEventListener('DOMContentLoaded', function () {
  const otherRadio = document.querySelector('input[name="radio-alphabet"][value="無し"]');
  const nextFields = document.querySelectorAll('input[name="radio-registcolor"]');  // 無効化したい次のフィールドのクラス
  const orderColor = document.querySelector('.orderalpha');


  // 「無し」が選ばれたときの処理
  otherRadio.addEventListener('change', function () {
    if (this.checked) {
      nextFields.forEach(field => {
        orderColor.style.display = 'none'; // orderColorを非表示にする
        field.setAttribute('disabled', true); // フィールドを無効化
        field.removeAttribute('required'); //必須を消す
      });
    }
  });
  // その他以外の選択肢を選んだ場合、次のフィールドを有効化// 「無し以外」が選ばれたときの処理
  const otherRadios = document.querySelectorAll('input[name="radio-alphabet"]:not([value="無し"])');
  otherRadios.forEach(radio => {
    radio.addEventListener('change', function () {
      if (this.checked) {
        nextFields.forEach(field => {
          orderColor.style.display = 'block'; // orderColorを表示にする
          field.removeAttribute('disabled');  // フィールドを有効化
          field.setAttribute('required', true); //必須を戻す
        });
      }
    });
  });

  • Categories