layui 二级联动

HTML 部分

<form onsubmit="return false;" action="__SELF__" data-auto="true" method="post"
      class='form-horizontal layui-form' style='padding-top:20px'>
    <input type="hidden" name="id" value="{:input('id')}"/>
    <div class="form-group">
        <label class="col-sm-2 control-label">期刊</label>
        <div class='col-sm-3'>
            <select name="magazine" placeholder="请选择期刊" lay-filter="magazine">
            <option value="">请检索关键词或选择</option>
            {volist name="$magazines" id="magazine"}
            <option value="{$magazine.id}">{$magazine.name}
            </option>
            {/volist}
            </select>
        </div>
        <div class="col-sm-3">
            <select name="publish" id="publish">
                <option value=""></option>
            </select>
        </div>
    </div>


    <div class="hr-line-dashed"></div>
    <div class="col-sm-8 col-sm-offset-2">
        <div class="layui-form-item text-center">
            <button class="layui-btn" type="submit">提交数据</button>
        </div>
    </div>
</form>

JS 部分

<script>
    layui.use('form', function(){
        var form = layui.form;
        form.on('select(magazine)', function(data){
            var areaId=data.elem.value;
            $.ajax({
                type: 'POST',
                url: "{:url('getPublish')}",
                data: {areaId:areaId},
                dataType:  'json',
                success:function(e){
                    console.log(e.data);
                    //empty() 方法从被选元素移除所有内容
                    $("select[name='publish']").empty();
                    var html = "<option value='0'>选择期数</option>";
                    $(e.data).each(function (v, k) {
                        html += "<option value='" + k.id + "'>" + k.title + "</option>";
                    });
                    //把遍历的数据放到select表里面
                    $("select[name='publish']").append(html);
                    //从新刷新了一下下拉框
                    form.render('select');      //重新渲染
                }
            });
        });

    });
</script>

 

个人博客   www.hzfblog.com

### LayUI 二级联动功能中的 JSON 数据格式 在 LayUI二级联动功能中,JSON 数据通常用于动态加载子级选项的内容。以下是基于提供的引用内容以及 LayUI 官方文档的知识总结出的 JSON 数据格式及其使用方法。 #### JSON 数据结构 对于二级联动的功能,父级下拉框的选择会触发 AJAX 请求,服务器端返回对应的子级数据。这些数据一般以 JSON 格式传递给前端。以下是一个典型的 JSON 数据格式: ```json [ { "value": "001", "name": "部门A" }, { "value": "002", "name": "部门B" } ] ``` 此 JSON 数组表示一组可选项,其中 `value` 是唯一标识符,而 `name` 则是显示的文字[^1]。 #### 实现流程 当用户选择父级下拉框的一个选项时,通过 AJAX 向服务端发送请求并获取相应的子级数据。随后解析该 JSON 数据并将新选项填充到子级下拉框中。具体实现如下所示: ```javascript form.on('select(parentSelect)', function(data) { // 绑定父级 select 变化事件 const parentId = data.value; // 获取当前选中的值 $.ajax({ url: 'api/getChildrenData', // 假设这是接口地址 type: 'GET', data: { parent_id: parentId }, // 将父级 id 发送给后端 success: function(response) { const childOptions = response.data || []; // 解析返回的数据 $('#childSelect').empty(); // 清空原有的子级选项 childOptions.forEach(function(option) { $('#childSelect').append( `<option value="${option.value}">${option.name}</option>` // 动态创建 option 元素 ); }); form.render('select'); // 更新表单渲染状态 } }); }); ``` 以上代码片段展示了如何监听父级下拉框的变化,并利用 AJAX 调用远程 API 来更新子级下拉框的内容[^2]。 #### 注意事项 - **跨域问题**:如果前后端分离部署,则需要注意 CORS 配置以免发生跨域错误。 - **性能优化**:针对大量数据场景可以考虑分页或者懒加载技术减少一次性传输量过大带来的压力。 - **异常处理**:增加 try-catch 或者 error callback 处理网络失败等情况下的用户体验友好提示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值