tempad
Readygo技术搜索引擎 >>游戏开发 >> 难题.难题.真是难...(互动下拉框问题)

难题.难题.真是难...(互动下拉框问题)

Readygo技术搜索引擎 网络搜索 efish 2008-1-17 2:00:40

难题.难题.真是难...(互动下拉框问题)

楼主clipper_clipper(clipper_clipper)2002-11-22 17:30:14 在 Web 开发 / ASP 提问

表结构如下:  
  id(城市编号),sheng(省份名称),city(城市名称)  
      1                               浙江                         杭州  
      2                               浙江                         宁波  
      3                               浙江                         温州  
      4                               江苏                         南京  
      5                               江苏                         苏州  
      6                               江苏                         无锡  
      7                               安徽                         合肥  
      8                               安徽                         黄山  
   
  将数据库里的记录取出  
  在一个sheng下拉框里放“省份名称”(唯一),在city下拉框里放“城市名称”(要与省份匹配正确关系),在sheng下拉框改变时,触发onchang事件,来改变city下拉框里的相应内容。并且不能刷新页面。(我的想法:是否要将他们都存放在数组中,且要确定他们的内在联系)  
   
  问题点数:100、回复次数:5Top

1 楼sunlai(燕儿)回复于 2002-11-22 17:36:05 得分 40

<script   language="javascript">  
  <!--  
  function   changeAddress()  
  {var   str1,i,str2  
  str1=form1.AccAddr.options.value  
  i=str1.indexOf(",")  
  j=0  
  form1.textAddress2.options.length=0  
  while   (i>=0)    
  {  
    str2=     str1.substr(0,i)  
    form1.textAddress2.options=new   Option(str2)  
    form1.textAddress2.options.value=str2  
    j=j+1  
    str1=str1.substr(i+1)  
    i=str1.indexOf(",")  
  }  
   
  form1.textAddress1.value=form1.AccAddr.options.text  
   
  }  
   
  function   AddAddress2()  
  {  
  form1.textAddress2.value=form1.textAddress2.options.text  
  }  
  -->  
  </script>  
   
   
                              <select   name="AccAddr"   onchange=changeAddress()>  
                              <option     selected   value="">------------</option>  
                                  <%  
   
  set   rs=server.createobject("adodb.recordset")  
  rs.open   "select   daAddress1   from   DaAddress   group   by   daAddress1   ",con  
   
   
  while   not   rs.eof  
   
  set   rs2=server.createobject("adodb.recordset")  
   
  if   rs("daAddress1").value=""   then  
  rs2.open   "select   *   from   DaAddress   where   daAddress1=""   ",con  
  else  
  rs2.open   "select   *   from   DaAddress   where   daAddress1=""&   rs("daAddress1").value   &""   ",con  
  end   if  
   
        str=""  
        while   not   rs2.eof  
         
        str=str+   trim(rs2("daAddress2").value)+","  
        rs2.movenext    
        wend  
   
        rs2.close  
   
  %>    
                                  <option   value=<%=str%>   ><%=rs("daAddress1").value%></option>  
                                  <%    
    rs.movenext  
  wend      
  rs.close    
  %>    
                              </select>Top

2 楼cww7107(笑三笑)回复于 2002-11-22 17:49:54 得分 5

开始把全部城市名称、和省名称放到一个数组里,当省名称下拉框被点时接受变量(省名称变量),然后依次与数组中的省名称对比,如相同,则添加到城市下拉菜单中。  
   
  Top

3 楼wpmsoft(红旗下的蛋)回复于 2002-11-22 17:50:55 得分 5

给你一个我收藏的小东东,请参考并仔细分析,相信会解决你的问题的。  
  贴子的ID号1028160  
   
  --------------------  
    与人玫瑰,手有余香    
  --------------------  
  Top

4 楼denghan(很久没来ASP版了)回复于 2002-11-22 18:03:50 得分 50

测试通过:  
  首先,你的数据库应该这样安排:做两个表  
  省表   sheng               城市表   city  
  sid     sname                 cid       cname       sid  
  1           北京                   1         密云县       1    
  2           广东                   2         广州           2  
  3   .....                         3         深圳           2  
                                        4         珠海           2  
                                        5       ....  
   
  </head>  
  <%  
  dim   rs  
  dim   sql  
  dim   count  
  set   rs=server.createobject("adodb.recordset")  
  sql   =   "select   *   from   city   order   by   cid   asc"  
  rs.open   sql,conn,1,1  
  %>  
  <SCRIPT   language="JavaScript">  
  var   onecount;  
  onecount=0;  
  subcat   =   new   Array();  
                  <%  
                  count   =   0  
                  do   while   not   rs.eof    
                  %>  
  subcat   =   new   Array("<%=   trim(rs("cname"))%>","<%=   trim(rs("sid"))%>","<%=   trim(rs("cid"))%>");  
                  <%  
                  count   =   count   +   1  
                  rs.movenext  
                  loop  
                  rs.close  
                  %>  
  onecount=<%=count%>;  
   
  function   changelocation(locationid)  
          {  
          document.form1.city.length   =   0;    
   
          var   locationid=locationid;  
          var   i;  
          for   (i=0;i   <   onecount;   i++)  
                  {  
                          if   (subcat   ==   locationid)  
                          {    
                                  document.form1.city.options   =   new   Option(subcat,   subcat);  
                          }                  
                  }  
                   
          }          
  </SCRIPT>  
  <SCRIPT   language="javascript">  
  <!--  
  function   CheckForm()  
  {  
  document.form1.txtcontent.value=document.form1.doc_html.value;  
  return   true  
  }  
  //-->  
  </SCRIPT>  
  </head>  
  <body>  
  <form   name=form1   onsubmit="check()">  
  省份   <%  
                  sql   =   "select   *   from   sheng"  
                  rs.open   sql,conn,1,1  
  if   rs.eof   and   rs.bof   then  
  response.write   "请先添加省份。"  
  response.end  
  else  
  %>  
                  <SELECT   name="sid"   onChange="changelocation(document.form1.sid.options.value)"   ><%    
                  do   while   not   rs.eof  
  %><OPTION   selected   value="<%=trim(rs("sid"))%>"><%=trim(rs("sname"))%></OPTION>  
  <%  
                  rs.movenext  
                  loop  
  end   if  
                  rs.close  
  %>  
  </SELECT>    
  城市:<SELECT   name="cid">  
  <OPTION   selected   value="">==请选城市==</OPTION>  
              </SELECT>  
  </form>  
  </body>  
   
  Top

5 楼clipper_clipper(clipper_clipper)回复于 2002-11-22 22:59:48 得分 0

谢谢大家!我已经放分.但是好象没显示出来Top

责任编辑: efish 参与评论 查找更多:
相关文章
欢迎大家来讨论asp与asp.net 欢迎大家来讨论asp与asp.net
stl的代码不好运行! stl的代码不好运行!
价格体系里有暗返,分A B C 三个级别,达到那个级别… 价格体系里有暗返,分A B C 三个级别,达到那个级别,不显示金额,只显示A B C
也问远程数据库备份 也问远程数据库备份
系统如何判断客户端已经安装了EXCEL? 系统如何判断客户端已经安装了EXCEL?
感情付出越深,受伤害越深 感情付出越深,受伤害越深
急:win2000注册表备份文件bak.reg怎么在控制台下导… 急:win2000注册表备份文件bak.reg怎么在控制台下导回系统啊?
如何用directshow采集时压缩为mpeg4??? 如何用directshow采集时压缩为mpeg4???
关于JTable:选择表里的一行,要求新弹出的一窗口里… 关于JTable:选择表里的一行,要求新弹出的一窗口里面TextField显示这行各个字段的内容,JTable有这样的ActionListener吗?
我也来发一道让我百思不得其解的概率题 我也来发一道让我百思不得其解的概率题
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn

分类导航
Readygo技术搜索引擎