当然,以下是上一个回答结果的重新显示:
使用layui实现三级联动(省份、城市、区县)
在HTML中定义三个下拉选择框,分别用于选择省份、城市和区县。
<div class="layui-form-item">
<label class="layui-form-label">省份</label>
<div class="layui-input-block">
<select name="province" id="province" lay-verify="required" lay-search="">
<option value="">请选择省份</option>
<!-- 动态加载省份 -->
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">城市</label>
<div class="layui-input-block">
<select name="city" id="city" lay-verify="required">
<option value="">请选择城市</option>
<!-- 动态加载城市 -->
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">区县</label>
<div class="layui-input-block">
<select name="district" id="district" lay-verify="required">
<option value="">请选择区县</option>
<!-- 动态加载区县 -->
</select>
</div>
</div>
使用JavaScript(结合layui的jQuery模块)来监听省份选择框的变化,并据此动态加载城市和区县。
layui.use(['jquery', 'form'], function(){
var $ = layui.jquery,
form = layui.form;
// 假设的省份数据(实际应从后端获取)
var provinces = [{id: '1', name: '浙江省'}, {id: '2', name: '江苏省'}];
// 初始加载省份
function loadProvinces() {
$('#province').empty();
$('#province').append('<option value="">请选择省份</option>');
provinces.forEach(function(province) {
$('#province').append('<option value="' + province.id + '">' + province.name + '</option>');
});
form.render('select'); // 重新渲染select
}
// 加载城市(根据省份ID)
function loadCities(provinceId) {
// 这里应是一个AJAX请求,但这里用静态数据模拟
var cities = [{id: '11', name: '杭州市', parentId: '1'}, {id: '12', name: '宁波市', parentId: '1'}];
$('#city').empty();
$('#city').append('<option value="">请选择城市</option>');
cities.filter(function(city) {
return city.parentId == provinceId;
}).forEach(function(city) {
$('#city').append('<option value="' + city.id + '">' + city.name + '</option>');
});
form.render('select'); // 重新渲染select
// 示例中未包含加载区县,但逻辑类似
}
// 监听省份选择框的变化
$('#province').on('change', function(){
var provinceId = $(this).val();
if(provinceId){
loadCities(provinceId);
}
});
// 初始加载省份
loadProvinces();
});
在实际应用中,你需要通过AJAX请求从后端API获取省份、城市和区县的数据。后端API应该能够根据你的请求(如省份ID或城市ID)返回相应的数据列表。
确保在AJAX请求中正确处理异步数据。
使用form.render(‘select’)来重新渲染select元素,以确保新添加的选项能够正确显示。
根据实际情况调整数据结构和后端API的URL。
可以在城市选择框上添加类似的监听器,以在用户选择城市后加载区县数据(如果需要)。