小弟想做一个联动菜单,一级是商品类别,二级是商品名称.这两级菜单的数据分别从数据库的不同表中读出来的!一级的变化会引起第两级的变化.(这个小弟已经完成了,后面的才是重点)。第二级的变化会引起文本框数据的变化(文本框的数据从另一张表里读出,查询时须要第二级菜单的传值),小弟想问的就是,怎样将第二级菜单的值实时的传给文本框做查询??
代码如下:
<%
'取出小类里的数据,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%>
代码如下:
<%
'取出小类里的数据,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%>
<!--
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>
http://topic.csdn.net/t/20061201/15/5200032.html
参考这段ajax,将onchange事件和这个连起来就行了!good luck
还有就是用ajax了
菜单值 》 作为查询条件 》 显示结果在文本框中,结果返回后,同时刷新显示菜单和文本框.
用AJAX实现。