最难的ASP和JS结合体

mjch2008 2009-08-26 01:13:50
我的数据库 大类表bigclass: ID , bigclassname
小类表Smallclass: ID , bigclassid , smallclassname , a1, a1ok ,a2 ,a2ok

测试值:大类表bigclass: ID bigclassname

1 计算机
2 数学

小类表Smallclass: ID bigclassid smallclassname a1 a1ok a2 a2ok
1 1 ASP 照片 1 名片 1
2 1 PHP 饭卡 1
3 2 高数

我已经做好了大类和小类的联动,大,小类的select下拉框名分别为:bigselect和smallselect
现在我想达到的效果是:当我选择小类smallselect下拉框的选项时,通过数据库判断,当a1ok=1时,会自动在表单里面产生一个名和a1的字段名相同的Text文本框,当a2ok=1时,也会在表单里面生成一个名和a2字段名相同的TEXT文本框,以此类推,a10ok=1时,同样也产生名为a10的text文本框。

比如上表:选择小类ID为1的时候,表单里会同时出现两个文本框,名字分别为A1和A2,同时在文本框A1前显示汉字:"照片";文本框A2前出现汉字:”名片“


谢谢高手们,给个详细的做法,太难了
...全文
89 点赞 收藏 14
写回复
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
晕死,我在2楼说的方法就是结合AJAX的
回复
mjch2008 2009-08-26
谢谢大家,自己已经解决,用AJAX!
回复
sy_binbin 2009-08-26
获取不到的

你用AJAX的方法吧!
回复
mjch2008 2009-08-26
sy_binbin
怎么才能用ASP定义一个变量获取JS传来的值呢?就是onchange="aa(this)"之后,想在ASP里面定义SID=下拉框的传值
回复
mjch2008 2009-08-26
有没有办法定义SID等于传过来的那个值呢?
回复
sy_binbin 2009-08-26
你要搞清楚客户端代码和服务器端代码

我那个只是个例子,当然还有别的方法,你可以用AJAX,根据你的条件,把代码在服务器端生成,然后返回前台也可以。
回复
mjch2008 2009-08-26
6搂sy_binbin的思路看了,差不多实现了,但是还有点小问题.
首先:SELECT下拉框的代码是这样的
<select name="SmallClassName" onchange="aa(this)">
<option value="">选择子系统</option>
<%
sql="select * from KS_smallclass where bigclassid=" & selclass & ""
rs.open sql,conn,1,1
do while not rs.eof%>
<option value="<%=rs("id")%>"><%=rs("smallclassname")%></option>
<%
rs.movenext
loop
rs.close
%>


JS代码是这样的:

function aa(str)
{
var sid=document.myform.SmallClassName..value;
<%
exec="select * from KS_smallclass where id="&sid&""
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
%>
<%if rs("c1ok")=1 then%>
document.getElementById("aa").innerHTML="<%=rs("c1name")%>: <input name='cailiao1' type='file' id='cailiao1' />";
<%end if%>
<%
rs.close
%>
}

现在是下拉框选择后,下拉框的值传到JS的function aa(str) 代码里,我定义
var sid=document.myform.SmallClassName.value;
为什么查询语句exec="select * from KS_smallclass where id="&sid&"" 报错,
提示:语法错误 (操作符丢失) 在查询表达式 'id=' 中。
回复
liumingyu218 2009-08-26
原来也做过差不多的程序,也是搞了老半天......在来受教次
回复
sy_binbin 2009-08-26
不用刷新啊,你联动咋做的啊?
在你二级下拉框在放一个onchange事件

<script language="javascript">
function aa(str)
{
if(document.getElementById("select").value=="a")
{
document.getElementById("aa").innerHTML="照片:<input name='a1'>";
}
if(document.getElementById("select").value=="b")
{
document.getElementById("aa").innerHTML="卡片:<input name='a2'>";
}

}
</script>
<form id="form1" name="form1" method="post" action="">
<select name="select" id="select" onchange="aa(this)">
<option value="">请选择</option>
<option value="a">a</option>
<option value="b">b</option>
</select>
<span id="aa"></span>
</form>
回复
lzp4881 2009-08-26
这个很简单的,参考一下这个就知道了
http://hi.baidu.com/lz0830/blog/item/824674ef8326f0e6cf1b3e26.html
回复
mjch2008 2009-08-26
2搂的,主要是传个ID过来的时候整个页面会刷新一次,现在是不想要刷新,一旦刷新的话,整个表单的数据就清空了
回复
mjch2008 2009-08-26
2搂可以加我QQ吗?55693603,我实在不明白怎么弄,谢谢了
回复
就是一标题党

这么简单的还说最难的

在你的小类那里也做一个一模一样的联动,不过这里得到的不是分类,而是像你说的那样结果
比如你传一个小类的ID进来
sql="select * from 小类表Smallclass where ID="&传过来的ID
rs.open....
if rs("a1ok)=1 then
str=rs("a1")&"<input name='a1'>"
end if
if rs("a2ok")=1 then
str=str&rs("a2")&"<input name='a2'>"
end if

剩下的应该知道怎么弄了吧
回复
tidelgl 2009-08-26
我这没有代码,要代码去资源区找吧,不过给你思路.
你已经把联动作好了,就是如果组的问题了.
你应该已经会是了AJAX了,那就是处理交互的问题.
你选择后就是AJAX把数据传到后台,处理结果返回页面就可以开始了..
var _table;//得到你的表格对象
var _td ;//将返回的结果组装成<td>data</td>
将组装好的td追加到表格里就完成了
回复
发动态
发帖子
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
社区公告
暂无公告