关于layui+php,三级联动-编辑回显的问题。

忍不住吐槽一波。都什么年代了。现在都前后端分离,但是公司老项目非得用tp+layui。。

代码如下

php 复制代码
layui.use(['form'], function () {
        var form = layui.form;

		//php代码渲染页面的时候,将一级分类id和二级分类id带过来,存到页面input框中,属性为hidden。方便获取这里js获取
        var first_category_id = $('#first_category_id').val()
        var second_category_id = $('#second_category_id').val()
        var third_category_id = $('#third_category_id').val()

        // 加载省份数据
        $.ajax({
            url: '',
            type: 'post',
            dataType: 'json',
            data: {parentId: 0},
            success: function (res) {
            	//这里是select下拉框的id
                var provinceSelect = $('#province');
                var citySelect = $('#city');
                var districtSelect = $('#district');

                $.each(res.data, function (index, item) {
                    if (item.id == first_category_id) {
                        provinceSelect.append('<option value="' + item.id + '" selected>' + item.name + '</option>');

                        $.ajax({
                            url: '',
                            type: 'post',
                            dataType: 'json',
                            data: {parentId: item.id},
                            success: function (res) {
                                $.each(res.data, function (index, item) {
                                    if (item.id == second_category_id) {
                                        citySelect.append('<option value="' + item.id + '" selected>' + item.name + '</option>');

                                        $.ajax({
                                            url: '',
                                            type: 'post',
                                            dataType: 'json',
                                            data: {parentId: item.id},
                                            success: function (res) {
                                                $.each(res.data, function (index, item) {
                                                    if (item.id == third_category_id) {
                                                        districtSelect.append('<option value="' + item.id + '" selected>' + item.name + '</option>');
                                                    } else {
                                                        districtSelect.append('<option value="' + item.id + '">' + item.name + '</option>');
                                                    }
                                                })
                                            }
                                        })
                                        form.render('select');
                                    } else {
                                        citySelect.append('<option value="' + item.id + '">' + item.name + '</option>');
                                    }
                                })

                            }
                        })
                        form.render('select');
                    } else {
                        provinceSelect.append('<option value="' + item.id + '">' + item.name + '</option>');
                    }
                });
                form.render('select');
            }
        });

        // 监听下拉框变化事件--这里和回显没有关系了 点击事件触发
        form.on('select(province)', function (data) {
            var provinceId = data.value;
            if (provinceId !== '') {
                // 加载数据
                $.ajax({
                    url: '',
                    type: 'post',
                    dataType: 'json',
                    data: {parentId: provinceId},
                    success: function (res) {
                        var citySelect = $('#city');
                        citySelect.empty().append('<option value="">请选择</option>');
                        $.each(res.data, function (index, item) {
                            citySelect.append('<option value="' + item.id + '">' + item.name + '</option>');
                        });
                        form.render('select');
                    }
                });
            } else {
                // 清空下面两级的数据
                $('#city').empty().append('<option value="">请选择</option>');
                $('#district').empty().append('<option value="">请选择</option>');
                form.render('select');
            }
        });

        // 监听下拉框变化事件--这里和回显没有关系了 点击事件触发
        form.on('select(city)', function (data) {
            var cityId = data.value;
            if (cityId !== '') {
                // 加载区县数据
                $.ajax({
                    url: '',
                    type: 'post',
                    dataType: 'json',
                    data: {parentId: cityId},
                    success: function (res) {
                        var districtSelect = $('#district');
                        districtSelect.empty().append('<option value="">请选择</option>');
                        $.each(res.data, function (index, item) {
                            districtSelect.append('<option value="' + item.id + '">' + item.name + '</option>');
                        });
                        form.render('select');
                    }
                });
            } else {
                // 清空区县数据
                $('#district').empty().append('<option value="">请选择</option>');
                form.render('select');
            }
        });

html代码

html 复制代码
<div class="layui-form-item">
   <label class="layui-form-label">商品分类:</label>
   <div class="layui-input-inline">
       <select name="first" id="province" lay-filter="province">
           <option value="">请选择</option>
       </select>
   </div>
   <div class="layui-input-inline">
       <select name="second" id="city" lay-filter="city">
           <option value="">请选择</option>
       </select>
   </div>
   <div class="layui-input-inline">
       <select name="third" id="district" lay-filter="district">
           <option value="">请选择</option>
       </select>
   </div>
</div>
         
 <input type="hidden" id="third_category_id" value="{$info.category_id}">
 <input type="hidden" id="second_category_id" value="{$info.second_category_id}">
 <input type="hidden" id="first_category_id" value="{$info.first_category_id}">
相关推荐
XR12345678817 分钟前
医院基础网络改造升级选型深度解析
开发语言·网络·php
AC赳赳老秦2 小时前
电力能源公开数据采集实操:用 OpenClaw 合规抓取电网电价与发电量数据,生成区域能源供需分析报告
大数据·数据库·人工智能·python·php·deepseek·openclaw
m0_3807438713 小时前
给 Claude API 调用补上超时重试和错误分类
开发语言·人工智能·php
yuewell_ai15 小时前
机器人调度通讯怎么设计才不会被网络抖动瘫痪
网络·机器人·php
FfHUCisI1 天前
GMP 调度器:Go 并发的心脏是如何跳动的
开发语言·golang·php
星云API技术支持1 天前
企业微信二次开发外部群:群聊数据与联系人信息如何建立关联
数据库·php·企业微信
sbjdhjd2 天前
PHP eval 型 RCE:flag 正则过滤与通配符绕过实操 | 01
安全·web安全·网络安全·开源·系统安全·php·网络攻击模型
qetfw2 天前
Debian Nginx + PHP-FPM 配置:FastCGI、站点目录与访问验证
linux·nginx·debian·php
啊阿狸不会拉杆2 天前
《计算机网络-自顶向下方法》3.6 拥塞控制原理 读书笔记
计算机网络·智能路由器·php
郑州光合科技余经理2 天前
本地生活服务系统:成品模块和定制接口怎么划界
java·前端·人工智能·后端·系统架构·php·ai编程