2021-06-24 layui中多个下拉列表间的禁选和取消禁选

本文介绍了一个前端实现的功能:通过Layui库,创建了三个下拉列表,分别为大项、分项和小项。默认情况下,分项和小项是禁用的。当选择大项后,分项的禁用状态被移除并重新渲染,同时通过AJAX获取并填充分项数据。进一步,当分项被选择后,小项的禁用状态也被解除,同样使用AJAX获取并显示小项数据。该功能实现了下拉列表的联动效果,确保数据的层级关系正确呈现。
摘要由CSDN通过智能技术生成

现有大项、分项、小项三个下拉列表,实现功能:默认分项、小项是禁选,在大项选择之后分项取消禁选,分项选择之后小项取消禁选

1.添加  lay-filter="sportsTypeParent"

div class="layui-inline layui-col-md3">
                                            <label class="layui-form-label">运动大项<span style="color: red;">*</span></label>
                                            <div class="layui-input-block">
                                                <select id="sportsTypeParent" name="sportsTypeParent" lay-filter="sportsTypeParent" lay-verify="required" >
                                                    <option value="">请选择</option>
                                                    @for(perEvent in dictSportsTypeParent){
                                                    <option value="${perEvent.eventId}">${perEvent.eventName}</option>
                                                    @}
                                                </select>
                                            </div>
                                        </div>
                                        <div class="layui-inline layui-col-md3">
                                            <label class="layui-form-label">运动分项<span style="color: red;">*</span></label>
                                            <div class="layui-input-block">
                                                <select id="sportsTypeBranch" name="sportsTypeBranch" lay-filter="sportsTypeBranch" lay-verify="required">
                                                    <option value="">请选择</option>
                                                </select>
                                            </div>
                                        </div>
                                        <div class="layui-inline layui-col-md3">
                                            <label class="layui-form-label">运动小项<span style="color: red;">*</span></label>
                                            <div class="layui-input-block">
                                                <select id="sportsTypeSon" name="sportsTypeSon" lay-verify="required">
                                                    <option value="">请选择</option>
                                                </select>
                                            </div>
                                        </div>

2.    form.render('select');  将select的设置重新渲染

layui.use(['form', 'admin', 'ax','laydate','upload','formSelects','element', 'formSelects'], function () {
    var $ = layui.jquery;
    var $ax = layui.ax;
    var form = layui.form;
    var admin = layui.admin;
    var element = layui.element;
    var formSelects = layui.formSelects;
    var laydate = layui.laydate;
    var upload = layui.upload;

    //禁选分项和小项
    $("#sportsTypeBranch").attr("disabled","disabled");
    $("#sportsTypeSon").attr("disabled","disabled");
    form.render('select');

    // 选择大项时
    form.on('select(sportsTypeParent)', function(data){
        //分项取消禁选
        $("#sportsTypeBranch").removeAttr("disabled");
        form.render('select');

        var eventType = 2; //分项等级
        var parentId = data.value; //得到被选中的值

          $.ajax({
                type: "POST",
                url: '/perInfo/selectEvent?eventType=' + eventType + '&parentId=' + parentId,
                // data:{data},//这里data传递过去的是序列化以后的字符串
                success:function(data){
                    //每次请求完将上一次的请求结果清空,否则结果会一直叠加
                    $("#sportsTypeBranch").empty();
                    if(data == ''){
                        $("#sportsTypeBranch").append("<option value=''>暂无分项</option>");
                        form.render('select');
                    }else{
                        $.each(data, function(key, val) {
                            $("#sportsTypeBranch").append('<option value='+val.eventId+'>'+val.eventName+'</option>');
                            form.render('select');
                        });
                    }
                }
            });
    });

     // 选择分项时
    form.on('select(sportsTypeBranch)', function(data){
        //小项取消禁选
        $("#sportsTypeSon").removeAttr("disabled");
        form.render('select');

        var eventType = 3; //分项等级
        var parentId = data.value; //得到被选中的值

        $.ajax({
            type: "POST",
            url: '/perInfo/selectEvent?eventType=' + eventType + '&parentId=' + parentId,
            success:function(data){
                //每次请求完将上一次的请求结果清空,否则结果会一直叠加
                $("#sportsTypeSon").empty();
                if(data == ''){
                    $("#sportsTypeSon").append("<option value=''>暂无分项</option>");
                    form.render('select');
                }else{
                    $.each(data, function(key, val) {
                        $("#sportsTypeSon").append('<option value='+val.eventId+'>'+val.eventName+'</option>');
                        form.render('select');
                    });
                }
            }
        });
    });
});

 参考文章:更新渲染部分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值