下拉菜单三级级联的效果实现(jsp、js、Java、mysql)
2015-08-21 09:35
841 查看
三级级联的下拉菜单效果实现
1、效果图
2、jsp代码
<strong><span style="font-size:18px;"> <tr> <td>类别</td> <td> <select name="level1" id="level1" onchange="changeLevel('level1','level2');" style="width:100px;"> <option value="all" selected>全部 </select> <select name="level2" id="level2" onchange="changeLevel('level2','level3');" style="width:100px;"> </select> <select name="level3" id="level3" style="width:100px;"> </select> </td> </tr></span></strong>
3、js代码
加载jsp时,首先加载getLevel()方法<strong><span style="font-size:18px;"> $(function(){ loadTable(); $('#searchtool').prependTo('.datagrid-toolbar'); getLevel("level1","top",true); });</span></strong>
该js方法实现递归算法,通过post方法从后台获取数据返回到页面,遍历查询所得数据,添加到相关的下拉菜单下实现级联效果
//类别级联
function getLevel(levelId,parentId,ifFirst){
$("#"+levelId).html("");
$("#level3").html("");
if("level1"==levelId){
$("#"+levelId).append("<option value=''>全部");
}
if(""==parentId)return;
$.post('<%=basePath%>/suggestion/getLevel',
{parentId:parentId},
function (data){
$(data).each(function(i){
$("#"+levelId).append("<option value='"+this.id+"'>"+this.name);
if(!ifFirst&&i==0){
if("level1"==levelId){
changeLevel('level1','level2');
}
if("level2"==levelId){
changeLevel('level2','level3');
}
}
});
});
}
changeLevel方法是在下拉菜单选项变化是调用
function changeLevel(ls,le,ifFirst){
getLevel(le,$("#"+ls).val());
}
通过JQ获取ls的ID值,作为parentId传入getLevel()方法中进行查询
4、Java代码
controller.java中代码@Resource
private FunctionTreeService functionTreeService;
@RequestMapping(value = "/getLevel", method = POST)
@ResponseBody
public List<FunctionTree> getLevel(String parentId) {
List<FunctionTree> list = functionTreeService.getLevel(parentId);
return list;
}
service.java中代码
@Service public class FunctionTreeService { @Resource(name = "userDao") private HibernateDao<FunctionTree, String> functionTreeDao; public List<FunctionTree> getLevel(String parentId){ String hql = "from FunctionTree where 1=1 "; if (StringUtils.isEmpty(parentId)) { }else{ if ("top".equals(parentId)) { hql += " and parent is null"; }else { hql += " and parent.id="+parentId; } } hql += " order by id"; List<FunctionTree> l = functionTreeDao.findByHql(hql); return l; } }
5、mysql数据库数据
本文仅用于个人总结和查看,不喜勿喷。
相关文章推荐
- Eclipse导出JavaDoc中文乱码问题解决
- Android studio 导入eclipse工程
- java中的Synchronized 实现
- Java中堆内存和栈内存详解
- 图解 & 深入浅出 JavaWeb:Servlet必会必知
- 图解 & 深入浅出 JavaWeb:Servlet必会必知
- 图解 & 深入浅出 JavaWeb:Servlet必会必知
- JAVA 代理模式(Proxy)
- java动态代理(JDK和cglib)
- java泛型总结
- Hibernate ORM 5.0 正式发布,支持 Java 8
- win10怎么安装JDK8?win10安装与配置JDK8的环境变量
- Eclipse 无法打断点问题-遇到带斜杠的断点图标
- JRE与JDK的区别
- Java线程池的几种实现 及 常见问题讲解
- 浅析Java内存模型
- JAVA实现验证码
- Java EE登陆界面生成随机数防止恶意注册或者登录
- Thinking in java 之'对象的存储位置'
- Java中的Scanner类和String类