Ajax实现两个下拉框的联动

这里写自定义目录标题


学习中遇到的两个下拉框的联动问题。
例如电商后台的商品管理功能,需要选择商品的一级分类与二级分类。
代码:
html代码:

<div class="form-group ">
                            <select name="oldPrice" class="form-control" id="idGoodsTypeBig" style="width: 35%; float: left;" οnchange="selectType()" >
                                <option value='-1'>--请选择一级分类--</option>
                            </select>
                            <select name="oldPrice" class="form-control" id="idGoodsTypeSmall" style="width: 35%; float: left;margin-bottom: 14px">
                                <option value='-1'>--请选择二级分类--</option>
                            </select>
                        </div>

js代码:
进入页面的时候先初始化父级下拉框

   $(function () {
        queryList();
        //  
        $('#addModal').on('hide.bs.modal', function () {
                //  清空模态框里的内容
                document.getElementById("form").reset();
                //  
                // initParentSelec
                //  
                $("#idGoodsTypeSmall").html("<option value='-1'>--请选择二级分类--</option>");
        });
        //  初始化父下拉框
        initParentSelect();
    });

Ajax请求初始化父级下拉框的列表

function initParentSelect(){
            $.ajax({
            type:"get",
            contentType:"application/json",
            url:getGoodsTypeUrl,
            success: function(res){
                console.log(res);
                if (res.code === 0){
                    //  请求成功之后  需要解析数据 反显到HTML中
                    formatSelectionJS(res.data,"idGoodsTypeBig");
                } else {
                    swal("选择失败!", "error");  //初始化 父下拉框
                }
            },
            error: function (res){
                console.log(res)
                swal("初始化 父下拉框错误!", "error");
            }
        });
        }

Ajax请求初始化子级下拉框的列表

function getChildGoodsType(parentType){
            $.ajax({
            type:"get",
            data:{
                parentType:parentType
            },
            contentType:"application/json",
            url:getChildGoodsTypeUrl,
            success: function(res){
                if (res.code === 0){
                    //  请求成功之后  需要解析数据 反显到HTML中
                    formatSelectionJS(res.data,"idGoodsTypeSmall");
                } else {
                    swal("选择失败!", "error");  
                }
                
            },error: function (res){
                swal("初始化 子下拉框错误!", "data.msg", "error");
            }
        });
        }

将子级分类的数据列表添加到option标签中

function formatSelectionJS(dataList,id){
            let resJS = "";
            if("idGoodsTypeSmall" === id){
                resJS = "<option value='-1'>--请选择二级分类--</option>"
            }else{
                resJS = "<option value='-1'>--请选择一级分类--</option>"
            }
           
            for (let i = 0; i < dataList.length; i++) {
                const obj = dataList[i];
                resJS +="<option value='"+obj.type+"'>"+obj.msg+"</option>";
            }
            $("#"+id).html(resJS);
        }

queryList方法

function queryList() {
        $.ajax({
            type: "GET",
            url: getAllGoodsUrl,
            data: {
                userId: localStorage.getItem(keyUserID)
            },
            dataType: "json",
            success: function (data) {
                // === 类型和数值
                if (data.code === 0) {
                    //  查询成功    再看一遍这个查询到的结果
                    dataList = data.data;
                    formatGoodList();//将获取的商品数据插入到界面的表格中
                } else {
                    swal("查询失败!", data.msg, "error");
                }
            },
            error: function (data) {
                swal("查询错误!", "请检查您的网络是否正常", "error");
            }
        });
    }

实现两个下拉框的联动

function selectType(){   //onchange方法
        var options=$("#idGoodsTypeBig option:selected");
        getChildGoodsType(options.val());
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值