下拉选择框 多级联动 动态显示

1 篇文章 0 订阅
1 篇文章 0 订阅

1、涉及知识内容

1、js

2、jquery

3、js

4、bootstrap样式

2、效果图

3、数据库

CREATE TABLE `area` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `parent_id` int(11) NOT NULL DEFAULT '0',
  `area_level` int(11) NOT NULL,
  `area_name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of area
-- ----------------------------
INSERT INTO `area` VALUES ('1', '0', '1', '安徽省');
INSERT INTO `area` VALUES ('2', '0', '1', '北京市');
INSERT INTO `area` VALUES ('3', '0', '1', '上海市');
INSERT INTO `area` VALUES ('4', '1', '2', '合肥市');
INSERT INTO `area` VALUES ('5', '1', '2', '宿州市');
INSERT INTO `area` VALUES ('6', '4', '3', '瑶海区');
INSERT INTO `area` VALUES ('7', '4', '3', '包山区');
INSERT INTO `area` VALUES ('8', '3', '2', '浦东新区');
INSERT INTO `area` VALUES ('9', '3', '2', '徐汇区');
INSERT INTO `area` VALUES ('10', '3', '2', '杨浦区');
INSERT INTO `area` VALUES ('11', '3', '2', '松江区');
INSERT INTO `area` VALUES ('12', '3', '2', '宝山区');

4、Result.java

结果封装类

package com.lemon.pojo;/**
 * @Author lemon
 * @Date 2019/11/13 0013
 */

import java.util.List;

/**
 * 结果封装类
 * @Author lemon
 * @Date 2019/11/13 0013
 */
public class Result {

    //状态值
    private Integer code;
    //错误信息
    private String err;
    //结果
    private List<Area> dataList;


    //构造函数
    public Result(Integer code, String err, List<Area> dataList) {
        this.code = code;
        this.err = err;
        this.dataList = dataList;
    }


    //成功时的构造函数
    public Result(Integer code, List<Area> dataList) {
        this.code = code;
        this.dataList = dataList;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getErr() {
        return err;
    }

    public void setErr(String err) {
        this.err = err;
    }

    public List<Area> getDataList() {
        return dataList;
    }

    public void setDataList(List<Area> dataList) {
        this.dataList = dataList;
    }
}

5、SelectController.java

package com.lemon.controller;/**
 * @Author lemon
 * @Date 2019/11/12 0012
 */

import com.lemon.pojo.Area;
import com.lemon.pojo.Result;
import com.lemon.service.SelectService;
import org.apache.commons.collections.map.HashedMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * 多级联动
 * @Author lemon
 * @Date 2019/11/12 0012
 */
@Controller
@RequestMapping("/select")
public class SelectController {

    @Autowired
    SelectService selectService = new SelectService();

    //查询区域信息
    @RequestMapping("/findarea")
    @ResponseBody
    public Result findArea(Integer level_id, Integer parent_id){

        //查找区域列表
        List<Area> areaList = null;

        areaList = selectService.findAreaByLevelOrParentId(level_id, parent_id);
        return new Result(100,areaList);
    }


    //保存区域信息
    @ResponseBody
    @RequestMapping("/saveArea")
    public Object saveProSub() {

        Map<String,Integer> map = new HashMap<>();

        //这里假设保存成功 返回100
        map.put("code",100);
        return map;
    }
}

5、select.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>多级联动</title>
    <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script></head>
</head>
<body>
<div class="col-md-2">
    <select class="form-control" name="sheng" id="sheng">
        <option value="-1">请选择省</option>
    </select>

    <select class="form-control" name="shi" id="shi">
        <option value="-1">请选择市</option>
    </select>

    <select class="form-control" name="qu" id="qu">
        <option value="-1">请选择区</option>
    </select>
    <button class="btn btn-primary" id="saveArea">提交</button>
</div>


<!-- Modal -->
<div class="modal fade" id="errorModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                <h4 class="modal-title">区域选择</h4>
            </div>
            <div class="modal-body">
                <div class="status-inline">
                    <i class="iconfont icon-error" id="i_icon"></i>
                    <span class="title" id="span_error">

                        </span>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
            </div>
        </div>
    </div>
</div>


</body>

<script>
    $(document).ready(function (){

        // //清空省市区下拉框内容
        // $("#sheng").text("");
        // $("#shi").text("");
        // $("#qu").text("");

        //自动加载所有一级省下拉框内容
        $.ajax({

            url: "/select/findarea",
            type: "POST",
            data:{
                level_id: 1
            },
            dataType: 'json',
            success: function (data) {

                // console.log(data.dataList);

                var html = "";
                var len = data.dataList.length;
                for(var i = 0; i < len; i++){
                    html = '<option value=' + data.dataList[i].id + '>' + data.dataList[i].area_name + '</option>';
                    //将内容追加到省级下拉框里
                    $("#sheng").append(html);
                }
            }
        });

        //市级下拉框内容
        //改变省 下拉框内容时 执行
        $("#sheng").change(function () {
            // alert($(this).val());

            //清空市区下拉框内容
            $("#shi").text("");
            $("#qu").text("");
            //追加 第一个提示框
            $("#shi").append('<option value="-1">请选择市</option>');
            $("#qu").append('<option value="-1">请选择区</option>');
            //一级下拉框选择的内容
            var parent_id = $(this).val();
            //加载二级市
            $.ajax({

                url: "/select/findarea",
                type: "POST",
                data:{
                    level_id: 2,
                    parent_id: parent_id
                },
                dataType: 'json',
                success: function (data) {
                    // console.log(data.dataList);

                    var html = "";
                    var len = data.dataList.length;
                    for(var i = 0; i < len; i++){
                        html = '<option value=' + data.dataList[i].id + '>' + data.dataList[i].area_name + '</option>';
                        //将内容追加到市级下拉框里
                        $("#shi").append(html);
                    }
                }
            });

        });


        //区级下拉框内容
        //改变市 下拉框内容时 执行
        $("#shi").change(function () {
            // alert($(this).val());

            //清空区级下拉框内容
            $("#qu").text("");
            //追加 第一个提示框
            $("#qu").append('<option value="-1">请选择区</option>');

            //一级下拉框选择的内容
            var parent_id = $(this).val();
            //加载二级市
            $.ajax({

                url: "/select/findarea",
                type: "POST",
                data:{
                    level_id: 3,
                    parent_id: parent_id
                },
                dataType: 'json',
                success: function (data) {
                    // console.log(data.dataList);

                    var html = "";
                    var len = data.dataList.length;
                    for(var i = 0; i < len; i++){
                        html = '<option value=' + data.dataList[i].id + '>' + data.dataList[i].area_name + '</option>';
                        //将内容追加到区级下拉框里
                        $("#qu").append(html);
                    }
                }
            });

        });


        //报警提示弹出的提示
        function errorModal(tipText){
            $('#i_icon').removeClass('icon-error');
            $('#i_icon').removeClass('icon-success');
            $('#i_icon').addClass('icon-error');
            $('#span_error').text(tipText);
            $('#errorModal').modal('show');
        }


        //点击提交 保存区域信息
        $("#saveArea").click(function () {
            // alert($("#sheng").val() == -1)

            var sheng = $("#sheng").val();
            var shi = $("#shi").val();
            var qu = $("#qu").val();

            //是否选择省
            if(sheng == -1){
                errorModal("请选择省");
                return;
            }

            //是否选择市
            if(shi == -1){
                errorModal("请选择市");
                return;
            }

            //是否选择区
            if(qu == -1){
                errorModal("请选择区");
                return;
            }

            //保存区域信息
            $.ajax({
                url: "/select/saveArea",
                type: "POST",
                data:{
                    sheng: sheng,
                    shi: shi,
                    qu: qu
                },
                dataType: 'json',
                success: function (data) {

                    if(data.code == 100){
                        errorModal("保存区域成功!");
                    }else{
                        errorModal("保存失败!");

                    }
                }
            });

        });



    });
</script>
</html>

6、总结:

掌握了js、jquery、bootstrp基本用法。

js真的太重要了!!!

js真的太重要了!!!

js真的太重要了!!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

在Java中实现下拉列表的多级联,可以使用Swing架中的JComboBox组件。 JComboBox组件可以实现下拉列表的功能,而多级联需要根据用户选择的上级选项来态更新下级选项的内容。 以下是一个简单的示例代码,实现了两级联: ```java import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class MultiLevelComboBoxDemo extends JFrame implements ActionListener { private JComboBox<String> firstComboBox; private JComboBox<String> secondComboBox; public MultiLevelComboBoxDemo() { setTitle("Multi-Level ComboBox Demo"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建第一个下拉列表 String[] firstItems = {"A", "B", "C"}; firstComboBox = new JComboBox<>(firstItems); firstComboBox.addActionListener(this); // 创建第二个下拉列表 String[] secondItems = {"A1", "A2", "B1", "B2", "C1", "C2"}; secondComboBox = new JComboBox<>(secondItems); // 将下拉列表添加到窗口中 Container contentPane = getContentPane(); contentPane.setLayout(new FlowLayout()); contentPane.add(firstComboBox); contentPane.add(secondComboBox); pack(); setVisible(true); } @Override public void actionPerformed(ActionEvent e) { // 当用户选择第一个下拉列表中的选项时,更新第二个下拉列表的内容 String selectedFirstItem = (String) firstComboBox.getSelectedItem(); String[] secondItems; switch (selectedFirstItem) { case "A": secondItems = new String[]{"A1", "A2"}; break; case "B": secondItems = new String[]{"B1", "B2"}; break; case "C": secondItems = new String[]{"C1", "C2"}; break; default: secondItems = new String[0]; break; } secondComboBox.setModel(new DefaultComboBoxModel<>(secondItems)); } public static void main(String[] args) { new MultiLevelComboBoxDemo(); } } ``` 在该示例中,首先创建了两个下拉列表,分别是`firstComboBox`和`secondComboBox`。当用户选择`firstComboBox`中的选项时,通过监听器实现态更新`secondComboBox`的内容。根据用户选择的上级选项,态生成下级选项的内容,并将其设置为`secondComboBox`的模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值