`
caozuiba
  • 浏览: 902020 次
文章分类
社区版块
存档分类
最新评论

ASP二级联动下拉菜单

 
阅读更多
ASP+JavaScript+数据库 级联下拉菜单

<!--
***********************************
ASP+JavaScript+数据库 级联下拉菜单
***********************************
以前都用JS的多级级联下拉菜单,但那个有局限性,每次更新列表项内容时都必须修改程序,
今天有空,写了这个数据库形式的,易于管理和修改,且你可以在此思路上建立更多级的级联菜单。
好了,废话少说,言归正传。
测试数据库:test.mdb 你可以自己建一个。
-----------------------------------------------------------------------------
表名: 字段1 字段2 字段3
-----------------------------------------------------------------------------
表1: big_class big_class_id big_class_name
表2: small_class small_class_id small_class_name belongto_big_class
数据类型 自动编号 文本 数字
-----------------------------------------------------------------------------
以下是程序清单,共1个文件,文件名:test.asp
-->
<%
'option explicit
dim conn,connstr,db
db="test.mdb" '测试数据库
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")
conn.Open connstr
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>ASP+JavaScript+数据库 级联下拉菜单</title>
<style>
table{border: #00215a 1px dashed;}
td{font-size:12px;}
input,select{
font-size:9pt;
border-style:solid;
border-width:1;
cursor:default;
color:#03326B;
background-color:#FFFFFF;
height:16px;
}
a:link,a:visited{color: #000000;text-decoration: none;}
a:hover {color: #ff0000;text-decoration: none;FILTER: glow(color=ffffff,strength=0) shadow(color=aaaaaa,direction:135); POSITION: relative; WIDTH: 100%;}
</style>
<script language="JavaScript">
function addbig(){
document.all.a.style.display="block";
document.all.b.style.display="none";
document.all.c.style.display="none";
}
function addsmall(){
document.all.b.style.display="block";
document.all.a.style.display="none";
document.all.c.style.display="none";
}
function viewmenu(){
document.all.a.style.display="none";
document.all.b.style.display="none";
document.all.c.style.display="block";
}
</script>
<%
'从小类表中取出数据
set rs=server.CreateObject("adodb.recordset")
sql="select * from small_class "
rs.open sql,conn,1,1
%>
<script language="JavaScript">
var num;
//定义数组
var calArray=new Array();
<%
dim j
j=0
do while not rs.eof
%>
//将小类表中的所有相关记录存到数组calArray的对应元素中。
calArray[<%=j%>]=new Array("<%=rs("small_class_id")%>","<%=rs("small_class_name")%>","<%=rs("belongto_big_class")%>");
<%
j=j+1
rs.movenext
loop
rs.close
set rs=nothing
%>
//给num赋值为记录总数
num=<%=j%>
function givevalue(myvalue){
/*当选择大类列表的值不为空时首先清空小类下拉列表的所有项目。不然小类列表中的项目会叠加的。
同时也是初始化 options 的值为0 */
document.form3.small_class_select.length = 0;
//循环写出请求的大类所对应的小类。
for (i=0;i < num; i++)
{
if (calArray[i][2] == myvalue)
{
document.form3.small_class_select.options[document.form3.small_class_select.length] = new Option(calArray[i][1], calArray[i][0],"","");
/*定义新的Option对象并赋值。options的索引值从0开始。new Option对象有4个属性,对应分别是:文本串、value、defaultSelect、selected。在这里只用了第一个和第二个。*/
}
}
}
</script>
<script language="JavaScript">
function chk1(){
if (form1.big_class_name.value=="")
{
alert("请输入大类名称!");
form1.big_class_name.focus();
return false;
}
}
function chk2(){
if (form2.small_class_name.value=="")
{
alert("请输入小类名称!");
form2.small_class_name.focus();
return false;
}
}

</script>
</head>

<body background="background.jpg">
<%
dim rs,sql,noclass
select case request("action")
case "addbigclass"
addbigclass
case "addsmallclass"
addsmallclass
end select
%>
<div align="center"></div>
<table width="60%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr valign="middle">
<td height="48" colspan="3">
<div align="center"><font color="#999900"><b><font color="#FF0000">ASP</font>+<font color="#FF0000">JavaScript</font>+<font color="#FF0000">数据库</font>
级联下拉菜单</b></font></div></td>
</tr>
<tr>
<td width="22%" height="21" valign="bottom"><a href="#" onClick="addbig()">添加大类</a>
</td>
<td width="22%" valign="bottom"><a href="#" onClick="addsmall()">添加小类</a></td>
<td width="56%" valign="bottom"><a href="#" onClick="viewmenu()">预览效果</a></td>
</tr>
<tr>
<td height="33" colspan="3" valign="top">
<hr align="left" width="60%" size="1" color="#999900">
</td>
</tr>
<tr>
<td colspan="3" valign="top"> <div id="a" style="display:none">
<form name="form1" method="post" action="?action=addbigclass" onSubmit="return chk1()">
大类名称:
<input name="big_class_name" type="text" id="big_class_name" size="16">
<input type="submit" name="Submit" value=" 添 加 ">
</form>
</div>
<div id="b" style="display:none">
<form name="form2" method="post" action="?action=addsmallclass" onSubmit="return chk2()">
选择大类后添加小类:
<select name="addselect">
<%
set rs=server.CreateObject("adodb.recordset")
sql="big_class"
rs.open sql,conn,1,1
if rs.eof or rs.bof then
%>
<option selected>还没有添加大类</option>
<%
else
do while not rs.eof
%>
<option value="<%=rs("big_class_id")%>"><%=trim(rs("big_class_name"))%></option>
<%
rs.movenext
loop
end if
rs.close
set rs=nothing
%>
</select>
小类名称:
<input name="small_class_name" type="text" id="small_class_name" size="16">
<input type="submit" name="Submit2" value=" 添 加 ">
</form>
</div>
<div id="c" style="display:block">
<form name="form3" method="post" action="">
<select name="big_class_select" onChange="givevalue(document.form3.big_class_select.options[document.form3.big_class_select.selectedIndex].value)">
<%
dim firstid
set rs=server.CreateObject("adodb.recordset")
sql="select * from big_class order by big_class_id"
rs.open sql,conn,1,1
if rs.eof or rs.bof then
noclass=1
%>
<option selected>还没有添加大类</option>
<%
else
rs.movefirst
firstid=rs("big_class_id")
'在没有选择大类(页面刚载入)时要载入的大类。
%>
<option value="<%=rs("big_class_id")%>" selected><%=trim(rs("big_class_name"))%></option>
<%
rs.movenext
do while not rs.eof
%>
<option value="<%=rs("big_class_id")%>"><%=trim(rs("big_class_name"))%></option>
<%
rs.movenext
loop
end if
rs.close
set rs=nothing
%>
</select>
<select name="small_class_select">
<%if noclass=1 then%>
<option value="" selected>没有小类</option>
<%
else
'在没有选择大类(页面刚载入)时要载入的小类,要跟默认的大类对应。
set rs=server.CreateObject("adodb.recordset")
sql="select * from small_class where belongto_big_class="&firstid
rs.open sql,conn,1,1
if rs.eof or rs.bof then
%>
<option value="" selected>没有小类</option>
<%
else
do while not rs.eof
%>
<option value="<%=rs("small_class_id")%>"><%=trim(rs("small_class_name"))%></option>
<%
rs.movenext
loop
end if
rs.close
set rs=nothing
end if
%>
</select>
</form>
</div></td>
</tr>
</table>
<%
sub addbigclass()
set rs=server.CreateObject("adodb.recordset")
sql="select * from big_class where big_class_name='"&trim(request("big_class_name"))&"'"
rs.open sql,conn,1,3
if not(rs.eof and rs.bof) then
response.Write("<script>alert('该大类已经存在!');</script>")
else
rs.addnew
rs("big_class_name")=trim(request("big_class_name"))
rs.update
response.Write("<script>alert('大类添加成功!');self.location='test.asp?action=viewmenu';</script>")
end if
rs.close
set rs=nothing
end sub
sub addsmallclass()
set rs=server.CreateObject("adodb.recordset")
sql="select * from small_class where small_class_name='"&trim(request("small_class_name"))&"' and belongto_big_class="&request("addselect")
rs.open sql,conn,1,3
if not(rs.eof and rs.bof) then
response.Write("<script>alert('该小类已经存在!');</script>")
else
rs.addnew
rs("belongto_big_class")=request("addselect")
rs("small_class_name")=trim(request("small_class_name"))
rs.update
response.Write("<script>alert('小类添加成功!');self.location='test.asp?action=viewmenu';</script>")
end if
rs.close
set rs=nothing
end sub
conn.close
set conn=nothing
%>
<table width="60%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="48%"> <div align="right">Copyright © </div></td>
<td width="1%"></td>
<td width="11%"><b><a href="http://cooleasy.xicp.net/">酷易在线</a></b> </td>
<td width="40%"><a href="mailto:xljxlj279@126.com">联系站长</a></td>
</tr>
</table>
</body>
</html>

**********************************************************************************************************************

从数据库读出数据生成关联下拉菜单!
<table width="74" border="0" cellpadding="1" cellspacing="0">
<tr>
<td width="37"><select name="ClassName" id="ClassName" onChange="opensubselect(document.all.SubClass,document.all.ClassName.value)">
<!-- <SELECT NAME="ClassName" ID="ClassName" onChange="OpenSubClass(this.name,this.value)"> -->
</select></td>
<td width="37"><select name="SubClass" id="SubClass">
</select></td>
</tr>
<script language="JAVASCRIPT" type="TEXT/JAVASCRIPT">
var SubClass=[],SubClassID=[];
<%
Dim Rs_Class,Rs_SubClass,SqlStr,i,j,SubClassStr,SubClassID
Set Rs_Class=Server.CreateObject("ADODB.RecordSet")
Set Rs_SubClass=Server.CreateObject("ADODB.RecordSet")
SqlStr="Select * From [p_softClass]"
Rs_Class.open SqlStr,ConnStr,1,1
For i=1 to Rs_Class.RecordCount
Response.Write "document.all.ClassName.add(new Option('" & Rs_Class("name") & "'," & i &"));" & chr(13)
SqlStr="SELECT * FROM [p_soft_SubClass] WHERE ([pid]=" & Rs_Class("id") & ")"
Rs_SubClass.open SqlStr,ConnStr,1,1
SubClassStr=""
SubClassID=""
For j=1 To Rs_SubClass.RecordCount
SubClassStr=SubClassStr & "'" & Rs_SubClass("name") & "',"
SubClassID=SubClassID & Rs_SubClass("ID") & ","
Rs_SubClass.MoveNext
Next
If len(SubClassStr)>0 Then
Response.Write "SubClass[" & i & "]=new Array(" & Left(SubClassStr,Len(SubClassStr)-1) & ");" & chr(13)
Response.Write "SubClassID[" & i & "]=new Array(" & Left(SubClassID,Len(SubClassID)-1) & ");" & Chr(13)
Else
Response.Write "SubClass[" & i & "]=new Array();" & chr(13)
End If
Rs_SubClass.close
Rs_Class.MoveNext
Next
Rs_Class.close
Set Rs_SubClass=nothing
Set Rs_Class=nothing
%>
function opensubselect(obj,id)
{
var i=SubClass[id].length;
obj.options.length=0;
// obj.add(new Option(SubClass[0]));
for(var h=0;h<i;++h)
{
obj.add(new Option(SubClass[id][h],SubClassID[id][h]));
}
}
opensubselect(document.all.SubClass,document.all.ClassName.value);
</script>
</table>

*************************************************************************************************************************
  
  '联社 信用社二级联动


  Sub LianDong2Ji()
  dim rsel,count,lastm <!--DVNEWS_AD_BEGIN-->
  set rsel=server.createobject("adodb.recordset")
  %>
  <script language = "JavaScript">
  
  <!--联社、信用社二级联动-->
  var onecount1;
  onecount1=0;
  rootcat = new Array();
  <%
  count = 1
  lastm = ""
  %>
  rootcat[0] = new Array("0","请选择县级联社","0");
  <%
  rsel.open "Select XjlsMC,XjlsDH From XJLS Order By XjlsDH",MyConn,1,1
  
  do while Not rsel.eof
  %>
  rootcat[<%=count%>] = new Array("0","<%= trim(rsel(0))%>","<%= trim(rsel(1))%>");
  <%
  count = count + 1
  rsel.movenext
  loop
  rsel.close
  %>
  onecount1=<%=count%>;
  
  var onecount2;
  onecount2=0;
  subcat = new Array();
  <%
  count = 1
  lastm = ""
  %>
  subcat[0] = new Array("0","请先选择县级联社","0");
  <%
  rsel.open "Select XjlsDH,JC,SH From XYS Order By XjlsDH,SH",MyConn,1,1
  do while not rsel.eof
  if lastm <> trim(rsel("XjlsDH")) then
  %>
  subcat[<%=count%>] = new Array("<%= trim(rsel(0))%>","请选择信用社","0");
  <%
  lastm = trim(rsel("XjlsDH"))
  count = count + 1
  end if
  %>
  subcat[<%=count%>] = new Array("<%= trim(rsel("XjlsDH"))%>","<%= trim(rsel("JC"))%>","<%= trim(rsel("SH"))%>");
  <%
  count = count + 1
  rsel.movenext
  loop
  rsel.close
  %>
  onecount2=<%=count%>;
  
  
  function ChangeXjlsDH(locationid)
  {
  document.DQKSELECT.XjlsDH.length = 0;
  var locationid=locationid;
  var i;
  for (i=0;i < onecount1; i++)
  {
  if (rootcat[i][0] == locationid)
  {
  document.DQKSELECT.XjlsDH.options[document.DQKSELECT.XjlsDH.length] = new Option(rootcat[i][1], rootcat[i][2]);
  }
  }
  
  }
  
  function ChangeSH(locationid)
  {
  document.DQKSELECT.SH.length = 0;
  var locationid=locationid;
  var i;
  for (i=0;i < onecount2; i++)
  {
  if (subcat[i][0] == locationid)
  {
  document.DQKSELECT.SH.options[document.DQKSELECT.SH.length] = new Option(subcat[i][1], subcat[i][2]);
  }
  }
  
  }
  ChangeXjlsDH(0)
  ChangeSH(0)
  </script>
  <%
  End Sub

*********************************************************************************************************************

<script language=vbScript>
<!--
public x(33)
x( 0 )="东城,西城,崇文,宣武,朝阳,丰台,石景山,海淀,门头沟,房山,通州,顺义,昌平,大兴,平谷,怀柔,密云,延庆"
x( 1 )="黄浦,卢湾,徐汇,长宁,静安,普陀,闸北,虹口,杨浦,闵行,宝山,嘉定,浦东,金山,松江,青浦,南汇,奉贤,崇明"
x( 2 )="和平,东丽,河东,西青,河西,津南,南开,北辰,河北,武清,红挢,塘沽,汉沽,大港,宁河,静海,宝坻,蓟县"
x( 3 )="万州,涪陵,渝中,大渡口,江北,沙坪坝,九龙坡,南岸,北碚,万盛,双挢,渝北,巴南,黔江,长寿,綦江,潼南,铜梁,大足,荣昌,壁山,梁平, 城口,丰都,垫江,武隆,忠县,开县,云阳,奉节,巫山,巫溪,石柱,秀山,酉阳,彭水,江津,合川,永川,南川"
x( 4 )="石家庄,邯郸,邢台,保定,张家口,承德,廊坊,唐山,秦皇岛,沧州,衡水"
x( 5 )="太原,大同,阳泉,长治,晋城,朔州,吕梁,忻州,晋中,临汾,运城"
x( 6 )="呼和浩特,包头,乌海,赤峰,呼伦贝尔盟,阿拉善盟,哲里木盟,兴安盟,乌兰察布盟,锡林郭勒盟,巴彦淖尔盟,伊克昭盟"
x( 7 )="沈阳,大连,鞍山,抚顺,本溪,丹东,锦州,营口,阜新,辽阳,盘锦,铁岭,朝阳,葫芦岛"
x( 8 )="长春,吉林,四平,辽源,通化,白山,松原,白城,延边"
x( 9 )="哈尔滨,齐齐哈尔,牡丹江,佳木斯,大庆,绥化,鹤岗,鸡西,黑河,双鸭山,伊春,七台河,大兴安岭"
x( 10 )="南京,镇江,苏州,南通,扬州,盐城,徐州,连云港,常州,无锡,宿迁,泰州,淮安"
x( 11 )="杭州,宁波,温州,嘉兴,湖州,绍兴,金华,衢州,舟山,台州,丽水"
x( 12 )="合肥,芜湖,蚌埠,马鞍山,淮北,铜陵,安庆,黄山,滁州,宿州,池州,淮南,巢湖,阜阳,六安,宣城,亳州"
x( 13 )="福州,厦门,莆田,三明,泉州,漳州,南平,龙岩,宁德,东山"
x( 14 )="南昌市,景德镇,九江,鹰潭,萍乡,新馀,赣州,吉安,宜春,抚州,上饶"
x( 15 )="济南,青岛,淄博,枣庄,东营,烟台,潍坊,济宁,泰安,威海,日照,莱芜,临沂,德州,聊城,滨州,菏泽"
x( 16 )="郑州,开封,洛阳,平顶山,安阳,鹤壁,新乡,焦作,濮阳,许昌,漯河,三门峡,南阳,商丘,信阳,周口,驻马店,济源"
x( 17 )="武汉,宜昌,荆州,襄樊,黄石,荆门,黄冈,十堰,恩施,潜江,天门,仙桃,随州,咸宁,孝感,鄂州"
x( 18 )="长沙,常德,株洲,湘潭,衡阳,岳阳,邵阳,益阳,娄底,怀化,郴州,永州,湘西,张家界"
x( 19 )="广州,深圳,珠海,汕头,东莞,中山,佛山,韶关,江门,湛江,茂名,肇庆,惠州,梅州,汕尾,河源,阳江,清远,潮州,揭阳,云浮"
x( 20 )="南宁,柳州,桂林,梧州,北海,防城港,钦州,贵港,玉林,南宁地区,柳州地区,贺州,百色,河池"
x( 21 )="海口,三亚"
x( 22 )="成都,绵阳,德阳,自贡,攀枝花,广元,内江,乐山,南充,宜宾,广安,达川,雅安,眉山,甘孜,凉山,泸州"
x( 23 )="贵阳,六盘水,遵义,安顺,铜仁,黔西南,毕节,黔东南,黔南"
x( 24 )="昆明,大理,曲靖,玉溪,昭通,楚雄,红河,文山,思茅,西双版纳,保山,德宏,丽江,怒江,迪庆,临沧"
x( 25 )="拉萨,日喀则,山南,林芝,昌都,阿里,那曲"
x( 26 )="西安,宝鸡,咸阳,铜川,渭南,延安,榆林,汉中,安康,商洛"
x( 27 )="兰州,嘉峪关,金昌,白银,天水,酒泉,张掖,武威,定西,陇南,平凉,庆阳,临夏,甘南"
x( 28 )="银川,石嘴山,吴忠,固原"
x( 29 )="西宁,海东,海南,海北,黄南,玉树,果洛,海西"
x( 30 )="乌鲁木齐,石河子,克拉玛依,伊犁,巴音郭勒,昌吉,克孜勒苏柯尔克孜,博 尔塔拉,吐鲁番,哈密,喀什,和田,阿克苏"
x( 31 )=""
x( 32 )=""
x( 33 )="台北,高雄,台中,台南,屏东,南投,云林,新竹,彰化,苗栗,嘉义,花莲,桃园,宜兰,基隆,台东,金门,马祖,澎湖"

function test(a,b)
dim num,x1,i
num =a.selectedIndex
x1=split(x(num),",")
b.options.length=ubound(x1)+1
For i = 0 to ubound(x1)
b.options(i).text =x1(i)
b.options(i).value = x1(i)
next
end function
-->
</script>
<body>
<select name="a" onChange="vbscript:test a,b">
<option value= 0 >北京</option>
<option value= 1 >上海</option>
<option value= 2 >天津</option>
<option value= 3 >重庆</option>
<option value= 4 >河北</option>
<option value= 5 >山西</option>
<option value= 6 >内蒙古</option>
<option value= 7 >辽宁</option>
<option value= 8 >吉林</option>
<option value= 9 >黑龙江</option>
<option value= 10 >江苏</option>
<option value= 11 >浙江</option>
<option value= 12 >安徽</option>
<option value= 13 >福建</option>
<option value= 14 >江西</option>
<option value= 15 >山东</option>
<option value= 16 >河南</option>
<option value= 17 >湖北</option>
<option value= 18 >湖南</option>
<option value= 19 >广东</option>
<option value= 20 >广西</option>
<option value= 21 >海南</option>
<option value= 22 >四川</option>
<option value= 23 >贵州</option>
<option value= 24 >云南</option>
<option value= 25 >西藏</option>
<option value= 26 >陕西</option>
<option value= 27 >甘肃</option>
<option value= 28 >宁夏</option>
<option value= 29 >青海</option>
<option value= 30 >新疆</option>
<option value= 31 >香港</option>
<option value= 32 >澳门</option>
<option value= 33 >台湾</option>

</select>
<select name="b">
</select>
</body>

*****************************************************************

这里是以省份和城市为例,由于用到数据库,请先建立数据库dlist.mdb

数据库名称:dlist.mdb


省份表名称:Province
字段有:p_id(类型:自动编号),p_name(类型:文本,省份名称)

城市表名称:City
字段有:c_id(类型:自动编号),c_pid(类型:文本,省份名称,等于Province表中的p_name),c_name(类型:文本,城市名称)


源程序如下,保存为ASP文件即可执行。
------------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JS动态列表示例</title>
<script language="JavaScript"><!--
<%
dim conn,rs,grs,i,j,pstr,sstr
set conn=server.createobject("adodb.connection")
set rs=server.createobject("adodb.recordset")
set grs=server.createobject("adodb.recordset")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.mappath("dlist.mdb")
'写省份JS数组
rs.open "select * from province;",conn,1,1
pstr="var pstr=new Array("
for i=0 to rs.recordcount-1
if i<>rs.recordcount-1 then
pstr=pstr & "'" & rs("p_name") & "',"
else
pstr=pstr & "'" & rs("p_name") & "'"
end if
getsub(rs("p_name"))
rs.movenext
next
pstr=pstr & ");"
response.write pstr & vbcrlf
rs.close()
set rs=nothing
set grs=nothing

'根据省份写城市JS数组的过程
sub getsub(pname)
grs.open "select * from city where c_pid='" & pname & "';",conn,1,1
sstr="var sstr" & i & "=new Array("
for j=1 to grs.recordcount
if j<>grs.recordcount then
sstr=sstr & "'" & grs("c_name") & "',"
else
sstr=sstr & "'" & grs("c_name") & "'"
end if
grs.movenext
next
grs.close()
sstr=sstr & ");"
response.write sstr & vbcrlf
end sub
%>

//添加列表项目
//参数说明:FrmName-表单名、sName-要添加的列表名、sText-列表项显示的文本、sValue-列表项的值
function addOption(FrmName, sName, sText, sValue) {
var def = true;
var sel = true;
var optionName = new Option(sText, sValue, def, sel);
var length = FrmName[sName].length;
FrmName[sName].options[length] = optionName;
FrmName[sName].options[length].selected = false;
}

//删除列表项目
//参数说明:FrmName-表单名、sName-要删除的列表名、force-是否删除原来的项目(True删除,False保留)
function delOptions(FrmName, sName, force) {
var length = FrmName[sName].options.length;
for (var i=0; i<FrmName[sName].options.length; i++) {
if (FrmName[sName].options[i].selected || force) {
FrmName[sName].options[i] = null;
length--;
i--;
}
}
}

//获得要添加列表项目的数组;
//参数说明:what-要获得选定值的列表
function getArrayValue(what) {
return eval(what.options[what.options.selectedIndex].value);
}

//根据当前选定值,添加列表项目
//参数说明:FrmName-表单名、sName1-要获取选定值的列表名、sName2-要动态加载的列表名
function updateOptions(FrmName, sName1, sName2) {
delOptions(FrmName,sName2,true);
var ArrayValue=getArrayValue(FrmName[sName1]);
for (var i=0; i<ArrayValue.length;i+=1) {
addOption(FrmName,sName2,ArrayValue[i],'sstr'+i);
}
FrmName[sName2].options.selectedIndex =0;//设置默认显示的列表项目
}

function GetValue(k){
alert(k);
}

//--></script>
</head>

<body onLoad="updateOptions(frmdlist, 'lsti', 'lstb');updateOptions(frmdlist, 'lstb', 'lsts')">
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<form action="" method="post" name="frmdlist" id="frmdlist">
<table width="408" border="0" align="center" cellpadding="2" cellspacing="2">
<tr>
<td width="400">JS动态列表示例<select name="lsti" style="display:none"><option value="pstr">pstr</select></td>
</tr>
<tr>
<td><select style="width:200" name="lstb" id="lstb" onChange="updateOptions(this.form, 'lstb', 'lsts')">
</select>
<input type="button" name="Submit2" value="GetValue" onClick="GetValue(document.frmdlist.lstb.value)"></td>
</tr>
<tr>
<td><select style="width:200" name="lsts" id="lsts">
</select>
<input type="button" name="Submit" value="GetValue" onClick="GetValue(document.frmdlist.lsts.value)"></td>
</tr>
</table>
</form>
</body>
</html>

分享到:
评论

相关推荐

    jQuery+ASP+SQL实现二级联动下拉菜单

    jQuery+ASP+SQL实现二级联动下拉菜单 全国省市数据库可以从网上Down个合适的导入一下就可以了. /**************************** * Author:蓝客密探 * Blog:www.lanke.me * Forum:www.phpdn.cn 详细介绍页面:...

    asp 二级下拉菜单 二级菜单

    用于网站栏目二级子菜单的下拉 二级菜单 二级下拉菜单 栏目二级子菜单

    完全用asp实现二级菜单联动.doc

    完全用asp实现二级下拉框联动,asp实现二级菜单联动。文件内附详细源码, 部分源码预览:();"&gt; 请选择====="&gt;=====请选择===== if ch1=2 then for i=1 to m if ch3=rst("state") then response.Write(...

    asp.net无刷新二级联动下拉菜单

    asp.net无刷新二级联动下拉菜单,Droplist

    二级联动下拉菜单插件作菜单用好

    二级联动下拉菜单插件,用作ASP网站的菜单下拉按钮比较合适,可以用,经过测试

    ASP 实用的ajax二级联动菜单

    ASP 实用的ajax二级联动菜单

    asp.net(c#)与数据库关联的二级联动下拉选择

    asp.net C#,与数据库相关联的二级联动下拉选择列表。前台aspx+后台cs文件+AJAX控件,比较完整,不像网上死白COPY的那样,缺这缺那。绝对方便学习使用。

    Asp+Ajax二级联动的Select下拉菜单

    内容索引:ASP源码,Ajax相关,Ajax,联动菜单 Asp+Ajax二级联动的Select下拉菜单,当点击第一个Select的时候,根据所选值动态加载第二个Select列表框对应的内容,这样有效避免资料占用,如果需要加载的内容比较多,在...

    asp+ajax二级联动

    asp+ajax二级联动选择下拉菜单,很不错.

    asp下拉框二次联动

    asp下拉框二次联动

    jQuery 通用三级下拉联动菜单插件增强版

    内容索引:脚本资源,jQuery,下拉菜单,三级联动 用Jquery实现的三级联动下拉列表插件,压缩包内有多个不同的版本,其实现的基本原理大同小异,无非是调用方式的不同,第一个是通过读取XML构建,支持IE/firefox,...

    适用与firefox ASP.NET无刷新二级联动下拉列表

    适用与firefox ASP.NET无刷新二级联动下拉列表

    Asp+Ajax二级联动Select示例

    内容索引:ASP源码,Ajax相关,Ajax,二级联动 Asp+Ajax二级联动的Select下拉列表框示例,使用时才加载菜单数据,省得一上子把数据加载完再显示网页,这样做会提升网页加载速度。实现原理:创建一个XMLHttp实例,return...

    asp.net知识库

    ASP.NET 2.0使用Web Part创建应用程序之二(共二) 体验 .net2.0 的优雅(2) -- ASP.net 主题和皮肤 NET2.0系列介绍(一).NET 2.0 中Web 应用程序主题的切换 ASP.NET 2.0 中Web 应用程序主题的切换 2.0正式版中...

    AJAX 源码范例

    document对象 05/5.10.2.html 使用复选框范例 05/5.11.12.html 下拉框实例:二级联动的下拉列表菜单 &lt;br&gt;第6章 06/6.1.3.html 使用方括号([])引用对象的属性和方法范例 06/6.1.5.html ...

    ExtAspNet_v2.3.2_dll

    -增加中国的省市县三级联动示例(data/shengshixian.aspx)(feedback:Blues T)。 -修正了使用IFrameUrl的Tab在切换过程中会重复加载的问题,这是一个在v2.1.6引入的问题(feedback:eroach)。 -修正了启用...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -增加中国的省市县三级联动示例(data/shengshixian.aspx)(feedback:Blues T)。 -修正了使用IFrameUrl的Tab在切换过程中会重复加载的问题,这是一个在v2.1.6引入的问题(feedback:eroach)。 -修正了启用...

Global site tag (gtag.js) - Google Analytics