实现前端两个下拉框的联动(前端基于bootstrapt和freemarker,后台基于springboot+jpa)

这种联动的话整体思路是:第一级没有任何约束,直接从数据库查询即可;第二级数据查询条件是第一级实体类字段

controller 层:

@ApiOperation(value = "二级网格与一级网格联动", notes = "二级网格与一级网格联动")
@SysLog("二级网格与一级网格联动")
@PostMapping(value = "/findSecondByGrid")
public List<MapSecondGrid> findSecondByGrid(String oneLevelGrid) {
    return this.mapGridService.findSecondByGrid(oneLevelGrid);
}

service 层:

/**
 * @return  二三级网格联动
 */
List<MapSecondGrid> findSecondByGrid(String oneLevelGrid);

serviceImpl 层:

/**
 * @return  二级网格json数据
 */
@Override
public List<MapSecondGrid> findSecondByGrid(String oneLevelGrid) {
    return this.mapSecondGridRepository.findSecondByGrid(oneLevelGrid);
}

Repository 层:

/**
 * @return 二级网格json数据
 */
@Query(value = "select * from map_second_grid where one_level_grid = ?1", nativeQuery = true)
List<MapSecondGrid> findSecondByGrid(String oneLevelGrid);

----------------------------------前端代码-------------------------------

<script>
    $(document).ready(function(){
        $.ajax({
            type: "POST",
            dataType: "json",
            cache: false,
            url: getRootPath() + "/map/grid/one",      //这是一级下拉框从数据库取得数据的接口
            success: function (result) {
                $("#firstGridId").empty();
                $("#firstGridId").append("<option value=''>请选择</option>");
                for (var i=0;i<result.length;i++)
                {
                    $("#firstGridId").append("<option value="+result[i].name+">"+result[i].name+"</option>");
                }
            },
            error: function (result) {
                layer.alert("保存失败1,"+result.mess);
            }
        });
    });

    function onchangeMed(value){
        $.ajax({
            type: "POST",
            dataType: "json",
            cache: false,
            data: {oneLevelGrid:value},
            url: getRootPath() + "/map/grid/findSecondByGrid",  //这是二级下拉框根据一级字段的值从数据库取得数据的接口
            success: function (result) {
                console.log(result);
                $("#twoLevelGrid").empty();
                $("#twoLevelGrid").append("<option value=''>请选择</option>");
                for (var i=0;i<result.length;i++)
                {
                    $("#twoLevelGrid").append("<option value="+result[i].gridName+">"+result[i].gridName+"</option>");
                }
            },
            error: function (result) {
                layer.alert("保存失败2,"+result.mess);
            }
        });
    }


</script>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过JavaScript来实现下拉框联动,具体思路如下: 1. 在HTML中定义两个下拉框,一个是父级下拉框,一个是子级下拉框; 2. 在JavaScript中定义一个联动函数,该函数绑定父级下拉框的onchange事件,每次父级下拉框选项改变时,都会重新生成子级下拉框的选项; 3. 在联动函数中,首先清空子级下拉框的选项,然后根据父级下拉框选中的值,从后端获取对应的子级选项,再将子级选项添加到子级下拉框中; 4. 最后,将联动函数绑定到父级下拉框的onchange事件中即可。 具体实现代码如下: HTML部分: ``` <label for="parent_select">父级下拉框:</label> <select id="parent_select"> <option value="">请选择</option> <option value="A">选项A</option> <option value="B">选项B</option> <option value="C">选项C</option> </select> <label for="child_select">子级下拉框:</label> <select id="child_select"> <option value="">请选择</option> </select> ``` JavaScript部分: ``` <script> var parent_select = document.getElementById("parent_select"); var child_select = document.getElementById("child_select"); parent_select.onchange = function() { // 清空子级下拉框的选项 child_select.options.length = 0; // 获取父级下拉框选中的值 var parent_value = parent_select.value; // TODO: 根据父级选项获取对应的子级选项 // 将子级选项添加到子级下拉框中 child_select.options.add(new Option("子级选项A", "A")); child_select.options.add(new Option("子级选项B", "B")); child_select.options.add(new Option("子级选项C", "C")); }; </script> ``` 其中,TODO部分需要通过Django等后端框架从数据库中获取对应的子级选项,此处只是示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值