Layui Select四级联动效果触发

刚入行三个月小白,写的不好请大佬指教!

前端页面

 		   <div class="div-left">
                <span class=" layui-form-label typeface">省</span>
                <select id="province" name="provinceId" class="province-selector" lay-filter="province"
                        lay-verify="required" lay-search>
                    <option value=''>请选择省/自治区</option>
                </select>
            </div>
            <div class="div-left">
                <span class=" layui-form-label typeface">市</span>
                <select id="city" name="cityId" class="city-selector" lay-filter="city" lay-verify="required"
                        lay-search>
                    <option value=''>请选择市/县</option>
                </select>
            </div>
            <div class="div-right">
                <span class=" layui-form-label typeface">县(区)</span>
                <select id="area" name="areaId" class="county-selector" lay-filter="area" lay-verify="required"
                        lay-search>
                    <option value=''>请选择镇区</option>
                </select>
            </div>
            <div class="div-head">
                <span class="typeface" style="margin-top: -10px;"></span>
            </div>
            <div class="div-left">
                <span class=" layui-form-label typeface">乡镇(街道)</span>
                <select id="street" name="streetId" class="county-selector" lay-filter="street" lay-verify="required"
                        lay-search>
                    <option value=''>请选择街道</option>
                </select>
            </div>

js部分

//监听省、市、县下拉框 发生变化时调用接口获取下面的内容并渲染
 form.on('select(province)', function (data) {
        $("#city").html("<option value=''>请选择市/县</option>");
        $("#area").html("<option value=''>请选择镇区</option>");
        $("#street").html("<option value=''>请选择街道</option>");
        if (data.value != "") {
            config.get_ajax(url, {
                async: false,
                data: {pid: data.value},
                success: function (res) {
                    if (res.code === 200) {
                        var data = res.data;
                        for (var k in data) {
                            var kv = data[k];
                            $("#city").append("<option value='" + kv.id + "'>" + kv.regionName + "</option>");
                        }
                    }
                }
            }, url);
        }

        form.render("select");
    });

    form.on('select(city)', function (data) {
        $("#area").html("<option value=''>请选择镇区</option>");
        $("#street").html("<option value=''>请选择街道</option>");
        if (data.value != "") {
            config.get_ajax(url, {
                async: false,
                data: {pid: data.value},
                success: function (res) {
                    if (res.code === 200) {
                        var data = res.data;
                        for (var k in data) {
                            var kv = data[k];
                            $("#area").append("<option value='" + kv.id + "'>" + kv.regionName + "</option>");
                        }
                    }
                }
            }, url);
        }
        form.render("select");
    })

    form.on('select(area)', function (data) {
        $("#street").html("<option value=''>请选择街道</option>");
        if (data.value != "") {
            config.get_ajax(url, {
                async: false,
                data: {pid: data.value},
                success: function (res) {
                    if (res.code === 200) {
                        var data = res.data;
                        for (var k in data) {
                            var kv = data[k];
                            $("#street").append("<option value='" + kv.id + "'>" + kv.regionName + "</option>");
                        }
                    }
                }
            }, url);
        }
        form.render("select");
    })

初始化部分 默认显示浙江省杭州市上城区清波街道

function initProvince() {
        config.get_ajax(url, {
            async: false,
            data: {pid: 0},
            success: function (res) {
                if (res.code === 200) {
                    var data = res.data;
                    for (var k in data) {
                        var kv = data[k];
                        $("#province").append("<option value='" + kv.id + "'>" + kv.regionName + "</option>");
                    }
                    form.render("select");
                    if (!oca_person_id) {
                        initNativePlace('330000', '330100', '330102', '330102001');
                    }
                }
            }
        }, url);
    }

模拟点击select框 并触发条件

 function initNativePlace(provinceId, cityId, areaId, streetId) {
        $('select[name="provinceId"]').next().find('.layui-select-title input').click();
        setTimeout(function () {
            $('select[name="provinceId"]').next().find('.layui-anim').children('dd[lay-value="' + provinceId + '"]').click();
        }, 100);

        $('select[name="cityId"]').next().find('.layui-select-title input').click();
        setTimeout(function () {
            $('select[name="cityId"]').next().find('.layui-anim').children('dd[lay-value="' + cityId + '"]').click();
        }, 200);

        $('select[name="areaId"]').next().find('.layui-select-title input').click();
        setTimeout(function () {
            $('select[name="areaId"]').next().find('.layui-anim').children('dd[lay-value="' + areaId + '"]').click();
        }, 300);

        $('select[name="streetId"]').next().find('.layui-select-title input').click();
        setTimeout(function () {
            $('select[name="streetId"]').next().find('.layui-anim').children('dd[lay-value="' + streetId + '"]').click();
        }, 400);

        form.render("select");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值