关于联动类的代码:
给个城市类的三框联动代码,具体思路是由JS从服务器上得到新的数据后插入页面。
这是联动页代码:
<!-- 这个JS负责执行函数 GETDATAW 从数据“推 送”页得到的JS代码,
功能 是将新产生的下拉框插入到对应的DIV中,以产生新的选 择列表-->
<script language="JavaScript" id="getareadata"></script>
<!-- 这个JS负责以不同的参数向数据“推送”页请求生成新的下拉列表框 -->
<script language="javascript">
<!--
  function getdataw(id,obj)
    {
  if (obj !="f_qu")
    {
    phpfilename="getareadata.php?id="+id+"&obj="+obj;
    document.getElementById("getareadata").src=phpfilename;
    }
  document.frmfarea.f_areadata.value=id;
  document.frmtj.f_tjid.value=id;
 }
 //-->
</script>
<form action="index.php?action=admin_area&act=<? if($_GET[act]=='addd') echo 'tj'; else echo 'xslb';?>" method="post" name="frmfarea">
  <table width="400" border="0" align="center" cellpadding="0" cellspacing="2">
    <tr>
      <td colspan="2" bgcolor="#FFF6E9">请选择地区:</td>
    </tr>
    <tr>
      <td width="72" rowspan="3" bgcolor="#FFF6E9"><div align="center"></div></td>
      <td width="322" bgcolor="#FFF6E9">
   <select name="f_sheng" id="f_sheng" onChange="javascript:getdataw(this.value,this.name);">
        <option value="-1" selected>==请选择省==</option>
     <?php
     $sqlaa="select * from sm_area where aa_upid=0 and aa_uptid=0 order by aa_name";
     $resultaa=@odbc_do($db,$sqlaa);
     while ($rstaa=@odbc_fetch_array($resultaa))
       {
    echo "<option value=\"$rstaa[aa_id]\">$rstaa[aa_name]</option>";
    }
     ?>
      </select></td>
    </tr>
    <tr bgcolor="#FFF6E9">
      <td>   <div id="showshi">
      <select name="f_shi" id="f_shi" onChange="javascript:getdataw(this.value,this.name);">
        <option value="-1" selected>==请选择市==</option>
      </select></div></td>
    </tr>
    <tr bgcolor="#FFF6E9">
      <td><div id="showqu">
      <select name="f_qu" id="f_qu" onChange="javascript:getdataw(this.value,this.name);">
        <option value="-1" selected>==请选择县/区==</option>
      </select></div>
      <input name="f_areadata" type="hidden" id="f_areadata">
      </td>
    </tr>
    <tr align="center" bgcolor="#FFF6E9">
      <td colspan="2"><input type="submit" name="Submit32" value="显示列表"></td>
    </tr>
  </table>
</form>--------------------下面是数据“推送”页 getareadata.php 代码
<?php
header("Cache-Control: no-store, no-cache,must-revalidate");//必须
require("config/database.php");
if ($_GET[obj]=="f_sheng")
  {//如果是省框变动则生成对应此省的市的下拉框代码
    $tdiv="showshi";
 $output="<select name='f_shi' onChange='javascript:getdataw(this.value,this.name);'><option value='-1' selected>==请选择市==</option>";
    $sql="select aa_id,aa_name from sm_area where aa_upid=$_GET[id]";
  }
else
  {//如果是市框变动则生成对应此市的区的下拉框代码
    $tdiv="showqu";
 $output="<select name='f_qu' onChange='javascript:getdataw(this.value,this.name);'><option value='-1' selected>==请选择县/区==</option>";
    $sql="select aa_id,aa_name from sm_area where aa_upid=$_GET[id]";
  }
$result=@odbc_do($db,$sql);
while ($rst=@odbc_fetch_array($result))
{//生成新的OPTION列表
  $output.="<option value='$rst[aa_id]'>$rst[aa_name]</option>";
}
$output.="</select>";
echo "document.getElementById(\"$tdiv\").innerHTML=\"$output\";";
//本页生成的JS代码由 id="getareadata" 的JS执行。最后一行即是将生成的SELECT框代码插入到对应的DIV标签中。
?>

解决方案 »

  1.   

    to: wy2000490(军),可以连数据一起发给我,让我研究一下吗?邮箱:[email protected]
      

  2.   

    楼上的高手别光说不练梅花雪斑竹的多极菜单  javascript类控件不错
    搜一下
      

  3.   

    to  beanbar(古枫),不好意思,临近过年,不想加班,我是心浮气躁了点。上个贴在结之前没看到你的回复,把你给漏了,至于分会给你补上。现在研究一下你给的代码,不懂得再请教。谢谢!高手如果有代码,直接发一分给我吧,弄好好回去过年。
      

  4.   

    [index.htm]<HTML>
        <HEAD>
     <script language="javascript" defer="defer">
     /*
     说明:三级全国地区菜单
     原创:恒星
     其它技术文章:www.bjcan.com/hengxing/more.asp
     日期:2006-1-20
     */
      //封装一个xmlhttp与服务器端进行交互
      function ajax(objstr)
      {
       //接收传递参数
       string="objstr="+escape(objstr);
       //建立对象
       var objXMLHTTP = null;  
       try  
       {  
        objXMLHTTP = new ActiveXObject("MSXML2.XMLHTTP");  
       }  
       catch(e)  
       {  
        try  
        {  
         objXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");  
        }  
        catch(e2){}
       } 
       //发送数据
       objXMLHTTP.open("POST", "ajax.asp", false);
       objXMLHTTP.setrequestheader("content-length",string.length); 
       objXMLHTTP.setrequestheader("content-type","application/x-www-form-urlencoded"); 
       objXMLHTTP.send(string); 
       //得到服务器端返加值
       return objXMLHTTP.responseText; 
      }
      
      
      //封装返回省级数据
      function city(objstr,objselect)
      {
       var _Array=ajax(objstr);
       var objselect=eval("document.all."+objselect);
       //加入select值前先清空其所有值
       objselect.length=0;
       var split_Array=_Array.split("|");
       for(i=0;i<split_Array.length;i++)
       {
        objselect.options.add(new Option(split_Array[i],split_Array[i]));
       }
       
      }
      
      //封装返回Select选中值
      function getSelectValue(id)
      {
       var oSel = document.all(id);
       return oSel.options[oSel.selectedIndex].value;
      }
      
      //封装改变省级菜单产生事件city1
      function city1_change()
      {
       city(getSelectValue("city1"),"city2");
       city(getSelectValue("city2"),"city3");
      }
      
      //封装改变县级菜单产生事件city2
      function city2_change()
      {
       city(getSelectValue("city2"),"city3");
      }
      
      //第一次载入页面初始化select
      city("0","city1");
      city(getSelectValue("city1"),"city2");
      city(getSelectValue("city2"),"city3");
       </script>
     <title>全国地区连动</title> 
     </HEAD> 
     <body>
      <table width="200" border="0" cellspacing="0" cellpadding="0">
       <form id="form">
        <tr>
       <td><select id="city1" onChange="city1_change();"></select></td>
       <td><select id="city2" onChange="city2_change();"></select></td>
       <td><select id="city3"></select></td>
        </tr>
        </form>
      </table>
     </body>
    </HTML>[ajax.asp]<!--#include file="conn.asp"-->
    <%
    Response.CharSet = "gb2312"
    area=""
    '--------------得到地区参数
    objstr=request("objstr")
    '--------------根据参数读取相应的下级地区
    set rs=server.createobject("adodb.recordset")
    rs.open"select * from area where fmc='"&objstr&"' order by id",conn,3,3
    '--------------循环得到数组并返回客户端
    for i=1 to rs.recordcount
     if i=1 then
     area=rs("mc")
     else
     area=area&"|"&rs("mc")
     end if
    rs.movenext
    next
    '--------------返回数据
    response.write area
    %>简单吧!
      

  5.   

    to: ph580(.Net,我喜欢!www.bjcan.com/hengxing),有PHP或js版吗?
      

  6.   

    我找了一个ASP的,谁可以帮我改成PHP的?谢谢
      

  7.   

    可以的话,留言下Email地址,我发过去
      

  8.   

    我只有ASP版的,实际PHP或JSP读取后台代码都是一个意思,如果你懂一点ASP修改一下就行了上面我发的就是ASP的