Thymeleafでプルダウンの選択値に応じて連動させる方法

Thymeleafでプルダウンの選択値に応じて連動させる方法

Thymeleafでプルダウンの選択値に応じて連動させる方法を実装するには、JavaScriptとThymeleafを組み合わせて行います。
以下は、国と都市の選択肢を例にした実装例です。

Thymeleafテンプレート

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <title>プルダウン連動</title>
  <script>
    function updateCities() {
      const country = document.getElementById("country").value;
      const cities = JSON.parse(document.getElementById("citiesData").textContent);
      const citySelect = document.getElementById("city");

      // 既存の選択肢をクリア
      citySelect.innerHTML = "";

      // 新しい選択肢を追加
      cities[country].forEach(city => {
        const option = document.createElement("option");
        option.value = city;
        option.textContent = city;
        citySelect.appendChild(option);
      });
    }
  </script>
</head>
<body>
  <form>
    <label for="country">国を選択:</label>
    <select id="country" name="country" onchange="updateCities()">
      <option value="日本">日本</option>
      <option value="アメリカ">アメリカ</option>
    </select>

    <label for="city">都市を選択:</label>
    <select id="city" name="city">
      <!-- 初期値 -->
    </select>
    
    <button type="submit">送信</button>
  </form>

  <script id="citiesData" type="application/json">
    {
      "日本": ["東京", "大阪", "京都"],
      "アメリカ": ["ニューヨーク", "ロサンゼルス", "シカゴ"]
    }
  </script>
</body>
</html>

説明

  • updateCities 関数は国のプルダウンの変更時に呼び出され、対応する都市のプルダウンを更新します。
  • citiesData は各国に対応する都市のデータを含むJSON形式のスクリプトです。

この例では、国を選択すると、その国に対応する都市のリストが更新されます。