返回

从零构建“三级联动”省市区选择器,让表单轻松自如!

前端

SEO 关键词:

文章:

三级联动选择器是一种常见的 Web 表单元素,它允许用户在三个相关下拉菜单中选择省、市和区县。这种选择器可以简化用户输入并确保所选地址有效。在本文中,我们将介绍如何使用原生 JavaScript 实现一个三级联动省市区选择器。

第一步:准备数据

在开始构建选择器之前,我们需要先准备省、市和区县的数据。这些数据可以从各种在线资源获取,也可以从本地数据库中获取。

const provinces = [
  {
    name: '北京',
    cities: [
      {
        name: '东城区',
        counties: [
          '东城区街道1',
          '东城区街道2',
          '东城区街道3',
        ],
      },
      {
        name: '西城区',
        counties: [
          '西城区街道1',
          '西城区街道2',
          '西城区街道3',
        ],
      },
    ],
  },
  {
    name: '上海',
    cities: [
      {
        name: '黄浦区',
        counties: [
          '黄浦区街道1',
          '黄浦区街道2',
          '黄浦区街道3',
        ],
      },
      {
        name: '徐汇区',
        counties: [
          '徐汇区街道1',
          '徐汇区街道2',
          '徐汇区街道3',
        ],
      },
    ],
  },
];

第二步:构建省级下拉菜单

接下来,我们将构建省级下拉菜单。该菜单将显示所有省份的名称。

<select id="province">
  <option value="" disabled selected>请选择省份</option>
  ${provinces.map((province) => `<option value="${province.name}">${province.name}</option>`)}
</select>

第三步:构建市级下拉菜单

市级下拉菜单将显示所选省份的所有城市。要实现这一点,我们将使用 JavaScript 来动态填充下拉菜单。

<select id="city">
  <option value="" disabled selected>请选择城市</option>
</select>
const citySelect = document.getElementById('city');

const provinceSelect = document.getElementById('province');
provinceSelect.addEventListener('change', (event) => {
  const selectedProvince = event.target.value;

  const cities = provinces.find((province) => province.name === selectedProvince).cities;

  citySelect.innerHTML = '';
  cities.forEach((city) => {
    const option = document.createElement('option');
    option.value = city.name;
    option.textContent = city.name;
    citySelect.appendChild(option);
  });
});

第四步:构建区县下拉菜单

区县下拉菜单将显示所选城市的所有区县。与市级下拉菜单类似,我们将使用 JavaScript 来动态填充下拉菜单。

<select id="county">
  <option value="" disabled selected>请选择区县</option>
</select>
const countySelect = document.getElementById('county');

const citySelect = document.getElementById('city');
citySelect.addEventListener('change', (event) => {
  const selectedCity = event.target.value;

  const counties = provinces.find((province) => province.name === selectedProvince).cities.find((city) => city.name === selectedCity).counties;

  countySelect.innerHTML = '';
  counties.forEach((county) => {
    const option = document.createElement('option');
    option.value = county;
    option.textContent = county;
    countySelect.appendChild(option);
  });
});

第五步:测试选择器

现在,我们可以测试一下选择器是否正常工作。打开浏览器并加载 HTML 页面。选择一个省份,然后选择一个城市和一个区县。选择器应该会相应地更新。

总结

以上就是如何使用原生 JavaScript 实现三级联动省市区选择器的详细步骤。这种选择器可以简化用户输入并确保所选地址有效。希望本文对您有所帮助!