通过监听layui的form模块的选择事件,我们可以加载对应的下级数据并动态填充到下级选择框中。在选择省、市和区县时,上一级选择框的值将作为下一级选择框的查询条件。
<!DOCTYPE html> < html > < head > < meta charset = "utf-8" > < title >城市三级联动</ title > </ head > < body > < div class = "layui-form" > < div class = "layui-form-item" > < div class = "layui-inline" > < label class = "layui-form-label" >省份</ label > < div class = "layui-input-block" > < select id = "province" lay-filter = "province" > < option value = "" >请选择省</ option > </ select > </ div > </ div > < div class = "layui-inline" > < label class = "layui-form-label" >城市</ label > < div class = "layui-input-block" > < select id = "city" lay-filter = "city" > < option value = "" >请选择市</ option > </ select > </ div > </ div > < div class = "layui-inline" > < label class = "layui-form-label" >区县</ label > < div class = "layui-input-block" > < select id = "district" lay-filter = "district" > < option value = "" >请选择区/县</ option > </ select > </ div > </ div > </ div > </ div > < script > layui.use(['form'], function(){ var form = layui.form; // 加载省份数据 var provinces = [ { district_id: 1, district_name: '北京市' }, { district_id: 2, district_name: '上海市' }, { district_id: 3, district_name: '广东省' } // 其他省份数据... ]; var provinceSelect = $('#province'); $.each(provinces, function(index, province){ provinceSelect.append(new Option(province.district_name, province.district_id)); }); form.render('select'); // 监听省份选择事件 form.on('select(province)', function(data){ var provinceId = data.value; if(provinceId){ // 加载市级数据(这里使用假数据) var cities = [ { district_id: 101, district_name: '市辖区', pid: 1 }, { district_id: 102, district_name: '市辖区', pid: 2 }, { district_id: 103, district_name: '广州市', pid: 3 } // 其他市级数据... ]; var citySelect = $('#city'); citySelect.empty().append(new Option('请选择市', '')); $.each(cities, function(index, city){ if(city.pid == provinceId){ citySelect.append(new Option(city.district_name, city.district_id)); } }); form.render('select'); }else{ $('#city').empty().append(new Option('请选择市', '')); $('#district').empty().append(new Option('请选择区/县', '')); form.render('select'); } }); // 监听市级选择事件 form.on('select(city)', function(data){ var cityId = data.value; if(cityId){ // 加载区县级数据(这里使用假数据) var districts = [ { district_id: 1001, district_name: '东城区', pid: 101 }, { district_id: 1002, district_name: '西城区', pid: 101 }, { district_id: 1003, district_name: '黄浦区', pid: 102 }, { district_id: 1004, district_name: '徐汇区', pid: 102 }, { district_id: 1005, district_name: '天河区', pid: 103 } // 其他区县级数据... ]; var districtSelect = $('#district'); districtSelect.empty().append(new Option('请选择区/县', '')); $.each(districts, function(index, district){ if(district.pid == cityId){ districtSelect.append(new Option(district.district_name, district.district_id)); } }); form.render('select'); }else{ $('#district').empty().append(new Option('请选择区/县', '')); form.render('select'); } }); }); </ script > </ body > </ html > |