编写一个实现省 市,县三级联动的菜单程序
时间: 2024-11-03 08:22:22 浏览: 14
在编写一个实现省、市、县三级联动的菜单程序时,通常会采用JavaScript或者前端框架(如jQuery、Vue.js或React)配合后端数据提供来实现动态加载选项的功能。以下是一个简单的HTML和JavaScript示例:
```html
<!DOCTYPE html>
<html lang="zh">
<head>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<select id="province" onchange="loadCities()">
<!-- 后端返回省级数据 -->
<option value="">请选择省份</option>
<!-- 这部分将由实际省份数据填充 -->
</select>
<select id="city" style="display:none;">
<!-- 初始化时隐藏 -->
</select>
<select id="county" style="display:none;">
<!-- 初始化时隐藏 -->
</select>
<script>
// 假设这里有一个异步函数获取省级数据
async function loadProvinces() {
const provinces = await fetch('/api/provinces'); // 替换为实际API路径
const data = await provinces.json();
populateProvinceSelect(data);
}
function populateProvinceSelect(provinces) {
let select = $('#province');
select.empty(); // 清空已有的选项
provinces.forEach(p => {
select.append('<option value="' + p.id + '">' + p.name + '</option>');
});
select.change(); // 触发change事件初始化城市选择
}
function loadCities() {
const provinceId = $('#province').val();
if (provinceId) {
loadCitiesByProvinceId(provinceId);
}
}
function loadCitiesByProvinceId(provinceId) {
const cityRequest = '/api/cities/' + provinceId; // 假设城市API需要省份ID作为参数
fetch(cityRequest)
.then(response => response.json())
.then(cities => {
const citySelect = $('#city');
citySelect.empty();
cities.forEach(c => {
citySelect.append('<option value="' + c.id + '">' + c.name + '</option>');
});
citySelect.show();
})
.catch(error => console.error('Error:', error));
}
// 初始化加载省份数据
loadProvinces();
</script>
</body>
</html>
```
在这个例子中,当用户选择省份时,`loadCities()`会被触发,然后发送请求到后端获取对应省份的城市列表,并更新下拉框。同理,选中城市后,会进一步加载县的数据。
阅读全文