JSPCN主页 | JSP空间 | 网站制作 | JSP下载 | JSP论坛 | JSP教程 | 关于JSPCN | 联系我们
JSP虚拟主机,jsp空间,java空间,java虚拟空间,详细请点击进入
做最专业的JSP中文网站 当前位置首页--技术新闻--缓存区  
文章搜索:
关键字 标题
  
JSP中文网内容管理系统(JCMS)
JSP虚拟主机
网络笔记本
网摘,图片,笔记收藏
虚拟服务器

JSPCN文章目录分类
JSP配置[219]JSP基础[136]
中文问题[69]上传问题[27]
JAVABEAN[46]数据库[212]
文件操作[126]图片声音[17]
JSP其他[57]时间相关[16]
JAVAMAIL[72]STRUTS[144]
开发工具[28]教程系列[157]
JSP实例[89]
JAVA基础[421]APPLET[78]
JAVA网络[179]Applica[115]
Servlet[98]XML[163]
J2ME[257]J2EE[374]
考试相关[63]JAVA线程[90]
EJB[261]Swing[26]
Java API[141]声音图片[28]
异常处理[33]JAVA实例[290]
JAVA类[139]SUN[89]
Hibernate[6]JMX[8]
Spring[34]
本版推荐文章 
本版热点文章 
相关文章链接 
 
三级级联下拉菜单实现
作者:     文章来源:
访问次数:1次     加入时间:2005年01月01日
三级级联下拉菜单实现(xml+js+struts)
derekzhangv.at.hotmail.com

好不容易实现的一个三级级联菜单,喜欢把复杂的问题简单化,所以从网上的一些方法中提取出一种相对清爽的方法 - 

jsp页面里只多了2行代码.(不过多了两个文件)

项目是用struts,所以jsp为例(其实这个实现应该在任何情况下都是可以用的,无论asp,php...)生成:"1个form里含2组3级级

联菜单" 
从某省某市某县
到某省某市某县

步骤:
1.xml数据源,也就是保存省市地名层次信息.
如果没有这个文件可能需要自己做一个,从数据库或者文本里提取一个xml文件出来应该不算难事吧.
再说这样的文件保存在xml文件里迟早会有用处的.
本例为:
(city.xml)
==========================
<?xml version="1.0" encoding="gb2312"?>
<provinces>
  <province name="吉林" shortname="吉">
    <city name="长春">
      <county name="" />
      <county name="双阳" />
      <county name="农安" />
    </city>
  </province>
  <province name="北京" shortname="京">
    <city name="">
      <county name="" />
      <county name="北京" />
      <county name="东城" />
      <county name="西城" />
   </city>
  </province>
  <province name="山西" shortname="晋">
    <city name="太原">
      <county name="" />
      <county name="古交" />
      <county name="阳曲" />
      <county name="清徐" />
      <county name="娄烦" />
    </city>
    <city name="大同">
      <county name="" />
      <county name="天镇" />
      <county name="灵丘" />
    </city>
  </province>
</provinces>
==========================

2.javascript(小弟的js学的不好,还请各位写个更好更简洁的方法)
(selectCity.js)
==========================
var from=["province","city","county"];
var to=["toprovince","tocity","tocounty"];
function selectFrom(num){
if(num==3) return;
var i,j,arrTemp=[];
 for(i=0;i<num;i++)
      arrTemp[i]=document.all(from[i]).options[document.all(from[i]).selectedIndex].text
 with(document.all(from[num])){
  length=0
  var obj=document.all.xmlData.XMLDocument.childNodes[1];
  for(i=0;i<num;i++)
      obj=obj.selectSingleNode(from[i]+'[@name="'+arrTemp[i]+'"]');
  for(i=0;i<obj.childNodes.length;i++)
      options[length++].text=obj.childNodes[i].getAttribute("name");
  onchange=new Function("selectFrom("+(num+1)+")");
  onchange();
 }
}
function selectTo(num){
if(num==3) return;
var i,j,arrTemp=[];
 for(i=0;i<num;i++)
      arrTemp[i]=document.all(to[i]).options[document.all(to[i]).selectedIndex].text
 with(document.all(to[num])){
  length=0
  var obj=document.all.xmlData.XMLDocument.childNodes[1];
  for(i=0;i<num;i++)
      obj=obj.selectSingleNode(from[i]+'[@name="'+arrTemp[i]+'"]');
  for(i=0;i<obj.childNodes.length;i++)
      options[length++].text=obj.childNodes[i].getAttribute("name");
  onchange=new Function("selectTo("+(num+1)+")");
  onchange();
 }
}
==========================

3.页面文件:(这里是struts,--这个应该没有关系)
(test.jsp)

==========================
  <script src="selectCity.js"></script>
  <xml id=xmlData src="city.xml" />
<body onload="selectFrom(0);selectTo(0);">
<html:form>
从<html:select property="province" ></html:select><html:errors property="province"/>
    <html:select property="city"></html:select><html:errors property="city"/>
    <html:select property="county"></html:select><html:errors property="county"/><br/>
到 <html:select property="toprovince" ></html:select><html:errors property="toprovince"/>
    <html:select property="tocity"></html:select><html:errors property="tocity"/>
    <html:select property="tocounty"></html:select><html:errors property="tocounty"/>
</html:form>
</body>
==========================

这样的三步就构造了一个"1个form里含2组3级级联菜单",其实还是满麻烦的.之前还见过一种是在js里建一个三维数组,

玩不转,所以根据网上的一些资料总结了这么一种做法.不知道有没有用.
有什么不妥不洁之处,烦请各位务必通知小弟.这里抛砖引玉了.
derekzhangv.at.hotmail.com
JSP虚拟主机 | JSP空间 | JSP主机 | JSP双线虚拟主机 | JAVA空间 | JAVA虚拟主机 | 虚拟服务器 | JSP 虚拟服务器 | VPS
Virtual Private Server | JAVA虚拟服务器 | VM服务器 | VHOST | 虚拟操作系统 | JSP论坛 | JAVA论坛 | JSP站点论坛
Copyright © 2002-2005 JSPCN.net. All rights reserved.
JSP中文网    备案序号:蜀ICP备05001583号
成都恒海科技发展有限公司    成都市一环路南二段6号新瑞楼三楼8号