<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<script type="text/javascript" src="scripts/jquery.js"></script>
</head>
<body>
<div id="selectDiv_1"></div>
<div id="selectDiv_2"></div>
</body>
<script type="text/javascript">
$(document).ready(function(){
var url = ["productSiteSortAction!queryProductTag.action","productSiteSortAction!queryProductSubtag.action"];
var data = ["productKindDTO.id","productTagDTO.id"];
var title = ["大类","小类","细类"];
$.cascadeSelect.initSelect("selectDiv_1",url,data,title,4);
$.cascadeSelect.initSelect("selectDiv_2",url,data,title,4);
});
(function($){
var current_select_id = -1;
var current_container_id = -1;
$.cascadeSelect={
//初始化联动菜单
initSelect: function(id,url,data,title,num){
if(id == undefined ||id == "" || url == null || url.length == 0 || data == null || data.length == 0 || num <= 1){
alert("参数传递错误!");
return;
}
/*
if(url.length != data.length || data.length != title.length || url.length != title.length){
alert("数组参数传递错误!");
return;
}
*/
var contianer = $("#"+id);
current_container_id = id;
if(contianer == null || contianer == undefined || typeof(contianer) == undefined){
alert("容器定义错误!");
return;
}
current_container_id = id.substr(10);
//创建select
for(var i = 0; i < num; i++){
var str_onchange = "$.cascadeSelect.ajaxQuerySelect(\""+url[i]+"\",\""+data[i]+"\",this);";
var str_select = title[i]+"<select id='select"+current_container_id+"_"+i+"' name='select_"+i+"' onchange='"+str_onchange+"'><option value=''>-- 选择 --</option></select>";
contianer.append(str_select);
}
$("#"+id).append("<select style='display:none' id='select"+current_container_id+"_-1'><option value=''></option></select>");
var obj =$("#select"+current_container_id+"_-1");
$.cascadeSelect.ajaxQuerySelect(url[0],data[0],obj[0]);
},
//发送ajax请求
ajaxQuerySelect: function(url,data,obj){
var _data = data+"="+obj.value;
current_select_id = parseInt(obj.id.substr(8));
current_container_id = $(obj).parent().attr("id").substr(10);
//alert(obj.id+","+current_container_id);
$.cascadeSelect.clearAfterCurrentSelect();
if(current_select_id != -1 && obj.value == ""){
return;
}
$.ajax({
type:"post",
async:false,
url:url,
data:_data,
datatype:"json",
success:$.cascadeSelect.callback_success,
error:$.cascadeSelect.callback_error
});
},
//回调函数处理返回的数据
callback_success:function(data){
var data = eval('(' + data + ')');
var _current_select_id = current_select_id + 1;
var select_i = $("#selectDiv_"+current_container_id+" > #select"+current_container_id+"_"+_current_select_id);
select_i.empty();
var str = "<option value=''>-- 选择 --</option>";
for(var i = 0; i < data.length; i++){
str+="<option value='"+data[i].id+"'>"+data[i].tagName + "</option>";
}
select_i.append(str);
},
//回调函数处理返回的数据
callback_error:function (XMLHttpRequest, textStatus, errorThrown){
alert(textStatus);
},
//把当前选择的之后所有菜单重置
clearAfterCurrentSelect:function(){
var selects = $("#selectDiv_"+current_container_id+" > select[id^='select"+current_container_id+"_']");
selects.each(function(){
var _e_id = parseInt($(this).attr("id").substr(8));
if(_e_id > current_select_id){
$(this).empty();
$(this).append("<option value=''>-- 选择 --</option>");
}
});
}
}
})(jQuery)
</script>
</html>
分享到:
相关推荐
开发中,有好多地方用到联动菜单,以前每次遇到联动菜单的时候都去重新写,代码重用率很低,前几天又遇到联动菜单的问题,总结了下,发现可以开发一个联动菜单的功能,以后想用的时候就方便多了。项目中每个页面都有...
9. **模块化与可复用性**:为了便于在其他项目中重用,三级联动菜单通常会被封装成一个独立的JavaScript插件或组件,遵循一定的模块化规范(如AMD, CommonJS或ES6模块)。 10. **测试**:最后,对菜单进行全面的...
在本文中,我们将探讨如何使用jQuery和Ajax技术来实现省市区三级联动的效果,这是一种常见的前端交互功能,尤其在填写地址信息时非常实用。我们将分别介绍未封装和封装两种实现方式。 首先,我们要理解这个功能的...
3. **JavaScript/jQuery**:大部分联动效果是通过客户端脚本实现的,主要是JavaScript和jQuery。当用户在第一个下拉框(一级)中做出选择时,触发一个事件,该事件使用AJAX请求从服务器获取与所选值关联的数据,并...
在"日历_省市联动_按钮样式_js_asp"这个项目中,开发者可能需要结合以上技术点,实现一个具有日历选择、省市联动下拉菜单和风格统一的按钮的网页应用。用户可以在日历控件中选择日期,省份选择后城市下拉菜单自动...
在这个经典例子中,我们看到它被应用于一个省、市、地区的选择菜单,通过AJAX实现三个下拉框的联动效果。下面我们将深入探讨这个技术及其在JAVA和JSP环境中的应用。 首先,我们要理解AJAX(Asynchronous JavaScript...