- 以总公司, 分公司为例
- 1.首先定义一个javascript对象 用于存储你要级联的那些数据
function subCompany(parentID, companyID, name) { this.parentID = parentID; //总公司ID this.companyID = companyID; //分公司ID 下拉框的value this.name = name; //分公司名 下拉框的text }
- 2.然后定义一个javascript 数组来存放上面的对象
var subCompanys = new Array();
- 3.接下来要将你从后台传来的数据 放到数组里
- 我这里是用jstl + el
这段代码要写在js标签里 <c:forEach var="subCompany" items="${formCommand.subCompanyCollection}"> subCompanys.push(new subCompany( "<c:out value="${subCompany.parentID}"/>", "<c:out value="${subCompany.sid}" />", "<c:out value="${subCompany.name}" />")); </c:forEach>
- 4. 再接下来 是当 总公司下拉框值变化时 触发的事件
function companyChangeEdit(obj) { var parentID = obj.value; var subCompanySelect = obj.form.subCompany;// 显示分公司的下拉框 subCompanySelect .options.length = 1; for(var i=0; i < subCompanys.length; i++){ var subCompanyObj = subCompanys[i]; if(subCompanyObj.parentID == parentID){ var oTempOption = document.createElement("option"); oTempOption.text = subCompanyObj.name; oTempOption.value = subCompanyObj.companyID; subCompanySelect .options[subCompanySelect .options.length] = oTempOption; } } if(obj.form.parentCompany.selectedIndex == 0){ obj.form.subCompanySelect .selectedIndex = 0; } }
- 还有两个下拉框
总公司的 <select name="parentCompany" onChange="companyChangeEdit(this);"> <option value="-1"> 请选择总公司 </option> <c:forEach var="company" items="${formCommand.companyCollection}"> <option value="<c:out value="${company.sid}" />" <c:if test="${company.sid == formCommand.companyId}">selected</c:if>> <c:out value="${company.name}" /> </option> </c:forEach> </select>
分公司的 <select name="subCompany"> <option value="-1"> 请选择子公司 </option> <c:forEach var="subCompany" items="${formCommand.currentSubCompanyCollection}"> <option value="<c:out value="${subCompany.sid}" />" <c:if test="${subCompany.sid == formCommand.subCompanyID}">selected</c:if>> <c:out value="${subCompany.name}" /> </option> </c:forEach> </select>
嗯 就这些了 总的思想是把所有数据加载到页面上先, 然后在由javascript 来负责显示
没有用ajax 项目要求(经理的)
还有一种方法是 隐藏的iframe 我没有那么作 因为还要写个页面 我觉得不爽
希望大家有什么好方法拿出来讨论啊 我就会这么多 还是个菜鸟啊