如何实现下拉框的三级联动???

yjdabc 2005-06-01 08:46:19
现有三个下拉框,zhang,mu,jie对应三个表:t_zhang,t_mu,t_jie
结构如下:
t_zhang
id int
zhang_name 章名称

t_mu
id int
mu_name 目名称
zhang_id 对应t_zhang表的ID值

t_jie
id int
jie_name 节名称
mu_id 对应t_mu表的ID值

这三个表其实就是一个树形结构的目录,现在需要我选择某一章后自动把目的下拉框内容填充为
select id,mu_name from t_mu where zhang_id = 选择的章ID
同时节的下拉框用(select id,jie_name from t_jie where mu_id = 目的第一项)填充,同理用户选择目后用(select id,jie_name from t_jie where mu_id = 选择的目ID)填充节!
我改怎么做?大家务必详细一些,我是刚从.net转过来的!!!
...全文
410 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjdabc 2005-06-02
  • 打赏
  • 举报
回复
唉,都是js的,这样就没有数据层了,如果章、目、节再需要根据用户权限来产生怎么吧,这不让大家都看到了吗?java没有这方面的组件吗?
hjoflash 2005-06-02
  • 打赏
  • 举报
回复
xmlHttp技术去看下很适合做这些
jxdn_yang 2005-06-02
  • 打赏
  • 举报
回复
两级,三级都有咯,嘻嘻
jxdn_yang 2005-06-02
  • 打赏
  • 举报
回复
脚本说明:
把如下代码加入<body>区域中
<!-- 二级联动 Start -->

<script language="JavaScript">
<!--

var subcat = new Array();
subcat[0] = new Array('10','1','=1')
subcat[1] = new Array('10','2','=2')
subcat[2] = new Array('10','3','=3')
subcat[3] = new Array('10','4','=4')
subcat[4] = new Array('10','5','=5')
subcat[5] = new Array('10','6','=6')
subcat[6] = new Array('10','7','=7')
subcat[7] = new Array('10','8','=8')
subcat[8] = new Array('10','9','=9')
subcat[9] = new Array('10','10','=10')
subcat[10] = new Array('20','11','=11')
subcat[11] = new Array('20','12','=12')
subcat[12] = new Array('20','13','=13')
subcat[13] = new Array('20','14','=14')
subcat[14] = new Array('20','15','=15')
subcat[15] = new Array('20','16','=16')
subcat[16] = new Array('20','17','=17')
subcat[17] = new Array('20','18','=18')
subcat[18] = new Array('20','19','=19')
subcat[19] = new Array('20','20','=20')

function changeselect1(locationid)
{
document.form1.s2.length = 0;
document.form1.s2.options[0] = new Option('==请选择==','');
for (i=0; i<subcat.length; i++)
{
if (subcat[i][0] == locationid)
{document.form1.s2.options[document.form1.s2.length] = new Option(subcat[i][1], subcat[i][2]);}
}
}
//-->
</script>

<form name="form1">

二级联动:

<select name="s1" onChange="changeselect1(this.value)">
<option>==请选择==</option>
<option value="10">1-10</option>
<option value="20">11-20</option>
</select>

<select name="s2" onChange="alert(this.value)">
<option>==请选择==</option>
</select>

</form>

<!-- 二级联动 Over -->

<!-- 三级联动 Start -->

<script language="JavaScript">
<!--

var subval = new Array();
subval[0] = new Array('10','单数','1','=1')
subval[1] = new Array('10','双数','2','=2')
subval[2] = new Array('10','单数','3','=3')
subval[3] = new Array('10','双数','4','=4')
subval[4] = new Array('10','单数','5','=5')
subval[5] = new Array('10','双数','6','=6')
subval[6] = new Array('10','单数','7','=7')
subval[7] = new Array('10','双数','8','=8')
subval[8] = new Array('10','单数','9','=9')
subval[9] = new Array('10','双数','10','=10')
subval[10] = new Array('20','单数','11','=11')
subval[11] = new Array('20','双数','12','=12')
subval[12] = new Array('20','单数','13','=13')
subval[13] = new Array('20','双数','14','=14')
subval[14] = new Array('20','单数','15','=15')
subval[15] = new Array('20','双数','16','=16')
subval[16] = new Array('20','单数','17','=17')
subval[17] = new Array('20','双数','18','=18')
subval[18] = new Array('20','单数','19','=19')
subval[19] = new Array('20','双数','20','=20')

function changeselect2()
{
document.form2.s2.length = 0;
document.form2.s2.options[0] = new Option('==请选择==','');
document.form2.s2.options[1] = new Option('选择单数','单数');
document.form2.s2.options[2] = new Option('选择双数','双数');
document.form2.s3.length = 0;
document.form2.s3.options[0] = new Option('==请选择==','');
}

function changeselect3(sub1,sub2)
{
document.form2.s3.length = 0;
document.form2.s3.options[0] = new Option('==请选择==','');
for (i=0; i<subval.length; i++)
{
if ((subval[i][0] == sub1) & (subval[i][1] == sub2))
{document.form2.s3.options[document.form2.s3.length] = new Option(subval[i][2], subval[i][3]);}
}
}
//-->
</script>

<form name="form2">

三级联动:

<select name="s1" onChange="changeselect2()">
<option>==请选择==</option>
<option value="10">1-10</option>
<option value="20">11-20</option>
</select>

<select name="s2" onChange="changeselect3(document.form2.s1.value,this.value)">
<option>==请选择==</option>
</select>

<select name="s3" onChange="alert(this.value)">
<option>==请选择==</option>
</select>

</form>

<!-- 三级联动 Over -->
yjdabc 2005-06-02
  • 打赏
  • 举报
回复
up
AlexGL 2005-06-01
  • 打赏
  • 举报
回复
如果是JSP页面表示的话,还是用JavaScript好点吧。。。。Struts好像没有这样的功能吧。。。
yjdabc 2005-06-01
  • 打赏
  • 举报
回复
我要jsp中实现,asp.net有DropDownList,我只要帮定它的数据源就可以了!
我不想使用javascrip,我看到java中有不少web框架像struts,jfc,这些都不能实现吗?

我这几年一直用.net,但因为公司的需要我现在正在为一个java项目做预研,请大家帮帮我!!!
jihanzhong 2005-06-01
  • 打赏
  • 举报
回复
jsp分帧显示,脚本控制
mq612 2005-06-01
  • 打赏
  • 举报
回复
你是说Jsp还是Appliction,Jsp中你可以用JavaScript协助来实现,Appliction中就好办多了,给JComboBox加上ItemListener监听,然后在监听中重新初始化下一级JComboBox。
zawx 2005-06-01
  • 打赏
  • 举报
回复
提交到后台,显示新的数据,
但页面上的其他FORM内容不变.
ariel_521 2005-06-01
  • 打赏
  • 举报
回复
顶下
这东西不是数据库么?
全粘架构师 2005-06-01
  • 打赏
  • 举报
回复
用form的select中onChange事件做,很多网站都有,拆他们网页代码看java script
chinamao 2005-06-01
  • 打赏
  • 举报
回复
收藏
grapepaul 2005-06-01
  • 打赏
  • 举报
回复
iframe做,比较不乱
bolg 2005-06-01
  • 打赏
  • 举报
回复
如果说的是web页面上的事情,有两种做法

1.开始就把所有数据都下载下来,保存在javascript的数组对象里,第一个下拉框选择的时候触发事件,取出相应数据,设置在第二个下拉框里面....
2.就是每次选择上级下拉框时,提交到服务器,把下级下拉框要的数据取出来...

两种做法各有优缺点,无非就是速度的问题了
自己决定把
cuij7718 2005-06-01
  • 打赏
  • 举报
回复
javascript首选
kkkkwx 2005-06-01
  • 打赏
  • 举报
回复
好像只能用javascript/vbscript吧

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧