第十四节 LayUI实现四级联动

亮子 2024-08-03 00:13:59 6492 0 0 0

当然,以下是上一个回答结果的重新显示:

使用layui实现三级联动(省份、城市、区县)

1. 准备HTML结构

在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>

2. 编写JavaScript逻辑

使用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();  
});

3. 后端数据源

在实际应用中,你需要通过AJAX请求从后端API获取省份、城市和区县的数据。后端API应该能够根据你的请求(如省份ID或城市ID)返回相应的数据列表。

4. 注意事项

确保在AJAX请求中正确处理异步数据。
使用form.render(‘select’)来重新渲染select元素,以确保新添加的选项能够正确显示。
根据实际情况调整数据结构和后端API的URL。
可以在城市选择框上添加类似的监听器,以在用户选择城市后加载区县数据(如果需要)。