小弟想做一个联动菜单,一级是商品类别,二级是商品名称.这两级菜单的数据分别从数据库的不同表中读出来的!一级的变化会引起第两级的变化.(这个小弟已经完成了,后面的才是重点)。第二级的变化会引起文本框数据的变化(文本框的数据从另一张表里读出,查询时须要第二级菜单的传值),小弟想问的就是,怎样将第二级菜单的值实时的传给文本框做查询??
  
代码如下:
<% 
'取出小类里的数据,proID:小类在大类里的ID号 
dim count
set rs=server.createobject("adodb.recordset")
rs.open "select * from productPrice order by id ",conn,1,1%>
<script language = "JavaScript">
var onecount;
onecount=0;
subcat = new Array();
<%
   count = 0
   do while not rs.eof
%>
<!---读出数据存入数组,第一位:productName是小类名称,第二位:bTypeID是小类在大类里的ID号,三位:小类ID----->
subcat[<%=count%>] = new Array("<%= trim(rs("productName"))%>","<%= rs("bTypeID")%>","<%= rs("id")%>");
<%
        count = count + 1
        rs.movenext
        loop
        rs.close
%>
        
onecount=<%=count%>;function changelocation(locationid)
    {
    document.form.proID.length = 0;
    var locationid=locationid;
    var i;
    for (i=0;i < onecount; i++)
        {
            if (subcat[i][1] == locationid)
            { //这句不是很理解
              document.form.proID.options[document.form.proID.length] = new Option(subcat[i][0], subcat[i][2]);
 
            }        
        }
        
    } 
//在这里再添加一个函数,将第二级的ID传给文本的PROID 
</script>商品类别:
<%
    rs.open "select * from proType order by id",conn,1,1
    '-----------列出大类数据
    if rs.eof and rs.bof then
    response.write "暂时没有商品类别,请添加"
    response.end
    else
%>
<select name="typeid" size="1" id="typeid" onChange="changelocation(document.form.typeid.options[document.form.typeid.selectedIndex].value)">
              <!--第一个:school_id是大类ID,第二个name是大类名称   -------------->
<option  value="<%=rs("id")%>"><%=trim(rs("bTypeName"))%></option>
<%      dim selclass
        '--------selclass是临时赋值器,小类展开时会用到        
         selclass=rs("id")
        rs.movenext
        do while not rs.eof
%>
<option value="<%=rs("id")%>"><%=trim(rs("bTypeName"))%></option>
<%
        rs.movenext
        loop
        end if
        rs.close
%>
</select>商品名称:<select name="proID" onChange="传值给文本框的函数,该怎么写???">
 <!---- 查找小类里同上selclass值相同的数据------->
<%
rs.open "select * from productPrice where bTypeID="&selclass ,conn,1,1
if not(rs.eof and rs.bof) then
%>   
<!---- id:小类ID,第二个是小类名称------->
<option value="<%=rs("id")%>"><%=rs("productName")%></option>
<% 
dim sTypeid
sTypeid=rs("id") '将值传给下面文本框!
rs.movenext
do while not rs.eof
%>
<option value="<%=rs("id")%>"><%=rs("productName")%></option>
<% 
rs.movenext
loop
end if
rs.close
set rs=nothing
%>
</select>文本框
<%
sqlC="select * from myBank where proID="& sTypeid&""'通过第二级的传值实时查询
set rs=conn.execute(sqlC)
if not rs.eof then
%>
<input type="text" name="fullName" value="<%=rs("fullName")%>
<% end if%>

解决方案 »

  1.   

    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function getValue(obj)
    {
    document.getElementById('txt1').value = obj.options[obj.selectedIndex].value;
    }
    //-->
    </SCRIPT>
    <FORM METHOD=POST name=form1 ACTION="">
    <SELECT NAME="s2" onchange="getValue(this)">
    <OPTION VALUE="请选择">请选择</OPTION>
    <OPTION VALUE="看看文本框的值">看看文本框的值</OPTION>
    </SELECT>
    <INPUT TYPE="text" NAME="txt1" id="txt1">
    </FORM>
      

  2.   

    客户端给服务端传值,下拉框得用ajax才能实现了。
    http://topic.csdn.net/t/20061201/15/5200032.html
    参考这段ajax,将onchange事件和这个连起来就行了!good luck
      

  3.   

    一个方法是一加载页面就把数据都加载进去
    还有就是用ajax了
      

  4.   

    在菜单显示之前,将
    菜单值 》 作为查询条件 》 显示结果在文本框中,结果返回后,同时刷新显示菜单和文本框.
    用AJAX实现。