省市区县三级联动JAVA+MySQL+JQuery
场景介绍:
由于项目要求,需要做一个进件(新增)功能,而该功能里要用到车品牌、车系、车型的联动查询,也就是经典的三级联动。
大体思路如下:
进入页面,会把所有的车品牌(第一级)在后台查询出来,放到缓存,页面在循环遍历,当选中车品牌(第一级)的某一项时,会根据此项异步的调用后台的方法,然后渲染到前台页面的车系(第二级),当选中车系(第二级)的某一项时,也会根据此项异步的调用后台的方法,然后渲染到前台页面的车型(第三级)。
当重新选择车品牌(第一级)时,会把车系(第二级)和车型(第三级)置为初始值'请选择车系'、'请选择车型',若车品牌(第一级)不做修改,而只是重新选择车系(第二级)时,则车型(第三级)要置为初始值'请选择车型'。
记录一下其中的难点(我认为的难点):
当重新选择某一级数据时,要把他的下级以及子级都要置为初始值!经过请教同事和搜索引擎,找到了一个叫select()的插件。
下面就贴出项目中关键代码:
JSP表单代码:
- <div class="control-group" style="margin-top:12px;">
- <label class="controls-label">品牌名称:</label>
- <form:select id="operTypeSelect" path="bannerId" class="input-medium" onchange="getBranchByBrandName()">
- <form:option selected="selected" value="">请选择</form:option>
- <c:forEach items="${tCdCarBrandList}" var="item" varStatus="status">
- <form:option value="${item.id }">${item.brandName }</form:option>
- </c:forEach>
- </form:select>
- <label class="controls-label">车系名称:</label>
- <select id="operSelect" name="branchId" class="input-medium" onClick="getModelByBranchName()">
- <option selected="selected" value="">请选择</option>
- <c:forEach items="${tCdCarBranchList}" var="item" varStatus="status">
- </c:forEach>
- </select>
- <label class="controls-label">车型名称:</label>
- <select id="modelsId" name="modelId" class="input-medium" style="width:400px;">
- <option selected="selected" value="">请选择</option>
- <c:forEach items="${tCdCarModelList}" var="item" varStatus="status">
- </c:forEach>
- </select>
- </div>
JS部分代码:
- function getBranchByBrandName() {
- var operTypeSelect = document.getElementById("operTypeSelect");
- var operTypeValue = operTypeSelect.value;
- var brandId = operTypeValue;
- $("#brandId").val(brandId);
- $("#modelsId").empty();
- $.ajax({
- mode:"abort",
- contentType:"application/x-www-form-urlencoded;charset=UTF-8",
- data:{"brandId":brandId},
- type:"POST",
- url:"<span style="font-family: Arial, Helvetica, sans-serif;">你的后台方法访问路径</span>",
- cache:false,
- async:false,
- processData:true,
- dataType:"json",
- success:function(tCdCarBrandList) {
- if (tCdCarBrandList != null && tCdCarBrandList.length > 0) {
- var str = "<option value=''> " + "请选择" + "</option>;";
- $.each(tCdCarBrandList, function(i, item) {
- if (item != "") {
- str = str + "<option value="+item.id+"> " + item.branchName + "</option>;";
- $("#operSelect").html(str);
- } else {
- $("#operSelect").html("<option id = oper value=''>请选择</option>");
- }
- });
- } else {
- $("#operSelect").html("<option id = oper>请选择</option>");
- }
- <span style="rgb(255, 0, 0);">$("#operSelect").select();</span>
- $("#modelsId").html("<option value=''>请选择</option>");
- <span style="background-color: rgb(255, 0, 0);">$("#modelsId").select();</span>
- }
- });
- }
- function getModelByBranchName() {
- var brandId = $("#operTypeSelect").val();
- var branchId = $("#operSelect").val();
- $("#bannerId").val(branchId);
- $.ajax({
- mode:"abort",
- contentType:"application/x-www-form-urlencoded;charset=UTF-8",
- data:{"brandId":brandId,"branchId":branchId},
- type:"POST",
- url:"你的后台方法访问路径",
- cache:false,
- async:true,
- processData:true,
- dataType:"json",
- success:function(tCdCarModelList) {
- if (tCdCarModelList != null && tCdCarModelList.length > 0) {
- var str = "<option value=''> " + "请选择" + "</option>;";
- $.each(tCdCarModelList, function(i, item) {
- if (item != "") {
- str = str + "<option value="+item.id+"> " + item.modelName + "</option>;";
- $("#modelsId").html(str);
- } else {
- $("#modelsId").html("<option value=''>请选择</option>");
- }
- });
- } else {
- $("#operSelect").html("<option value=''>请选择</option>");
- }
- <span style="background-color: rgb(255, 0, 0);">$("#modelsId").select();</span>
- }
- });
- }
后台JAVA部分查询代码:
- @ResponseBody
- @RequestMapping(value="findBranchByBrandName")
- public List<TCdCarBranch> findBranchByBrandName(TCdCarBranch tCdCarBranch,
- HttpServletRequest request, HttpServletResponse response, Model model) {
- // SQL中只用到了ajax中data的brandId,brandId与tCdCarBranch里的brandId字段对应
- List<TCdCarBranch> tCdCarBranchList = tCdCarBranchService.findList(tCdCarBranch);
- model.addAttribute("tCdCarBranchList", tCdCarBranchList);
- return tCdCarBranchList;
- }
- @ResponseBody
- @RequestMapping(value="findModel")
- public List<TCdCarModel> findModel(TCdCarModel tCdCarModel, HttpServletRequest request,
- HttpServletResponse response, Model model) {
- // SQL中只用到了ajax中data的brandId和branchId
- // brandId和branchId与tCdCarModel里的brandId和branchId字段分别对应
- List<TCdCarModel> tCdCarModelList = tCdCarModelService.findList(tCdCarModel);
- model.addAttribute("tCdCarModelList", tCdCarModelList);
- return tCdCarModelList;
- }
其中JS部分代码中背景为红色高亮代码即是可以将其下级以及子级置为初始化的关键代码,当初就是这行代码困扰了很少时间,
JS高亮代码加入之前的演示:

JS高亮代码加入之后的演示:

省市区县三级联动JAVA+MySQL+JQuery的更多相关文章
- easyui commobox省市区县三级联动
1.前端代码 <div class="col-6 f-group"> <label class="col-4 left_red"> 省名 ...
- 基于Jquery实现省份、城市、区县三级联动
前端感觉写的比较少,也是为了练手,下午没事用来写了这个三级联动,也是第一次写这东西. 据我了解,城市信息可以选择存在数据库或者直接写在前端,为了省事,我直接写在前端,下面是我的代码: <!DOC ...
- echarts地图边界数据的实时获取与应用,省市区县多级联动【附最新geoJson文件下载】
首先,来看下效果图 在线体验地址:https://hxkj.vip/demo/echartsMap/,并提供实时geoJson数据文件下载 echarts官方社区链接地址(可在线编辑):https:/ ...
- ajax省市线三级联动
<script type='text/javascript' src='http://ajax.useso.com/ajax/libs/jquery/1.7.2/jquery.min.js?ve ...
- 省份、城市、区县三级联动Html代码
<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...
- echarts 中国地图实现 省、市、区县三级联动,省级下钻、市级下钻
每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 效果如下图: 每天学习一点点 编程PDF电子书.视频教程免费下载:http://www ...
- Pyqt QComboBox 省市区县联动效果
在Qt中, QComboBox方法窗口组件允许用户从列表清单中选择,在web中就是select标签,下拉选项. 省市区县的联动就是currentIndexChanged 获取当前的Index,通过这个 ...
- 循序渐进VUE+Element 前端应用开发(21)--- 省市区县联动处理的组件使用
在很多应用中,往往都涉及到记录用户所在省份.城市.区县或者街道等信息,一般我们可以通过联动的Select或者类似的界面组件进行展示,或者使用Element中的el-cascader界面组件进行展示,而 ...
- Webform——中国省市三级联动以及IsPostBack
首先要明白Webform的运行顺序,当开始启动时候,首先执行的是Page_Load事件, 当点击任意按钮后,每次点击都要先执行一遍Page_Load(在这里Page_Load里面的事件是给数据控件加载 ...
随机推荐
- hdu5735
很美妙的一题 官方题解 http://www.cnblogs.com/duoxiao/p/5777632.html 感觉有meet in middle的思想 #include<bits/stdc ...
- cocos2d-x addImageAsync()异步加载资源成功之后的场景跳转问题
http://blog.csdn.net/w20175357/article/details/23546985 1.先说说addImageAsync()异步加载图片的问题 做游戏的时候现在资源的比较大 ...
- linux 把用户加入一个组&从这个组中移除
# usermod -a -G www zhou // zhou这个用户现在属于两个组 zhou www # groups zhou zhou : zhou www # gpasswd -d zhou ...
- 常用的phpstorm快捷键总结(带截屏版)
常用的phpstorm快捷键总结(带截屏版) 目 录 PhpStorm的快捷键有10类 1.编辑相关 2.搜索/替换 3.被使用搜索 4.项目运行 5.debug相关 6.导航相关 7.重构相关 8. ...
- 160. Intersection of Two Linked Lists【Easy】【求两个单链表的第一个交点】
Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...
- CodeVS1169 传纸条 [DP补完计划]
题目传送门 题目描述 Description 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端, ...
- 洛谷P1940买蛋糕
题目传送门 题意:给定你一个数n,要求用最小个数的整数组成小于等于n的所有整数,并求出方案数. 很明显,擅长二进制的大犇们肯定一眼就看得出方案数是log2(n)+1,然而我并不擅长,但是推了一小会儿也 ...
- coreseek mmseg分词配置和创建
1.文件格式为 沃尔沃 1x:1现代 1x:1徐工 1x:1住友 1 ... 3.将生成的符合格式要求的词表粘贴到原词表unigram.txt末尾,保存为unigram_new.txt,并拷贝到mms ...
- 【UOJ #131】【NOI 2015】品酒大会
http://uoj.ac/problem/131 求出后缀数组和height数组后,从大到小扫相似度进行合并,每次相当于合并两个紧挨着的区间. 合并区间可以用并查集来实现,每个区间的信息都记录在这个 ...
- [Atcoder 080] A~D Tutorial
很好奇这周为什么只有Beginner Contest而没有Regular Contest,本来想着去30minAK的,结果1个小时了还有一道题调不出来o(╯□╰)o A:Parking 让我体验了下开 ...