layui 三级联动 重新渲染

本文介绍如何使用HTML和JavaScript为表单添加联动效果,实现省级、市级、县级的三级联动选择,通过AJAX异步加载数据并实时更新下拉选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

html部分:

<div class="layui-form-item">
    <label class="layui-form-label">选择省市区</label>
    <div class="layui-input-inline">
        <select name="province" lay-search="" id="province" lay-filter="province">
            <option value="{$list.province_id}">{$list.province ?$list.province:'请选择省'}</option>
            
        </select>
    </div>
    <div class="layui-input-inline">
        <select name="city" lay-search="" id="city" lay-filter="city">
            <option value="{$list.city_id}">{$list.city ?$list.city:'请选择市'}</option>
            {volist name="citys" id="vo"}
            <option value="{$vo.id}">{$vo.name}</option>
            {/volist}
        </select>
    </div>
    <div class="layui-input-inline">
        <select name="area" lay-search="" id="area" lay-filter="area">
            <option value="{$list.area_id}">{$list.area ?$list.area:'请选择区'}</option>
            {volist name="areas" id="vo"}
            <option value="{$vo.id}">{$vo.name}</option>
            {/volist}
        </select>
    </div>
</div>

js部分:

    <script>
        var layer = layui.layer;

        var type;
        layui.use(['element', 'jquery', 'layer', 'form', 'laydate'], function () {
            var form = layui.form
                , element = layui.element
                , laydate = layui.laydate
			
			//加载省份
            $(function () {
                $.ajax({
                    url: "{:url('school/GetLevelThree')}",
                    dataType: 'json',
                    data: { "action_post": "GetProvince" },
                    type: 'POST',
                    success: function (res) {
                        console.log(res.data);
                        let selectData = res.data;
                        let newsArr = []
                        selectData.forEach(item => {
                                let obj = {
                                id:item.id,
                                name:item.name
                            }
                            newsArr.push(obj) 
                        });

                        newsArr.forEach(item => {
                            $("#province").append(`<option value="${item.id}">${item.name}</option>`);	//循环添加option选项
                        })
                        
                        layui.form.render();	//重新渲染页面
                    }
                })

            })
            form.on('select(province)', function (data) {
                $.ajax({
                    type: "POST",
                    url: "{:url('school/GetLevelThree')}",
                    data: { "action_post": "GetCity", "provinceid": data.value },
                    async: false,
                    success: function (res) {
                        console.log(res.data);
                        let selectData = res.data;
                        let newsArr = []
                        $("#city").empty();
                        $("#city").append(`<option value="">请选择市</option>`);
                        $("#area").empty();
                        $("#area").append(`<option value="">请选择区</option>`);
                        selectData.forEach(item => {
                                let obj = {
                                id:item.id,
                                name:item.name
                            }
                            newsArr.push(obj) 
                        });
                        newsArr.forEach(item => {
                            $("#city").append(`<option value="${item.id}">${item.name}</option>`);
                        })
                        layui.form.render();
                    }
                })
            });
            form.on('select(city)', function (data) {
                $.ajax({
                    type: "POST",
                    url: "{:url('school/GetLevelThree')}",
                    data: { "action_post": "GetArea", "cityid": data.value },
                    async: false,
                    success: function (res) {
                        console.log(res.data);
                        let selectData = res.data;
                        let newsArr = []
                        $("#area").empty();
                        $("#area").append(`<option value="">请选择区</option>`);
                        selectData.forEach(item => {
                                let obj = {
                                id:item.id,
                                name:item.name
                            }
                            newsArr.push(obj) 
                        });

                        newsArr.forEach(item => {
                            $("#area").append(`<option value="${item.id}">${item.name}</option>`);
                        })
                        layui.form.render();
                    }
                })
                // console.log(data.elem); //得到select原始DOM对象
                // console.log(data.value); //得到被选中的值
                // console.log(data.othis); //得到美化后的DOM对象
            });

        })
    </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值