关于复选框的问题

lijiuhua0721 2006-07-17 04:24:14
有四个复选框,其中每一项里都需要提交四个小上的数据,
如,复选框(id) 姓名(name) 性别(sex) 年龄(age) 电话(telphone)
1 aa 男 17 12345678
2 bb 女 16 12345678
3 cc 男 17 12345678
4 dd 男 16 12345678
上面带数据的应该是文本框需要提交的,
然后处理数时用以下程序
<%
list=split(replace(request.form("id")," ",""),",")
list1=split(replace(request.form("name")," ",""),",")
list2=split(replace(request.form("sex")," ",""),",")
list3=split(replace(request.form("age")," ",""),",")
list4=split(replace(request.form("telphone")," ",""),",")
for i=0 to uBound(list)
id=list(i)
name=list1(i)
sex=list2(i)
age=list3(i)
telphone=list4(i)
%>
<%=id%></br>
<%=name%></br>
<%
next
%>
如果全选的话,值能正常显示,
1
aa
2
bb
3
cc
4
dd
但如果是只选任务的两项三项或一项时这时的显示结果就会改变如,现在选择第一项和第三项时结果为
1
aa
3
bb
请问我的是哪里错了,应该如何去改
...全文
510 25 打赏 收藏 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
lijiuhua0721 2006-07-26
  • 打赏
  • 举报
回复
谢谢大家,用风之问情的方法可能完成
lijiuhua0721 2006-07-19
  • 打赏
  • 举报
回复
to boyd1985
你的这个里面没有文本框,也就是说你的全是ASP代码所以不是随意添加的,所以你在后台直接打开相应该的数据库就可以了,但我那是文件框,也就是说图是这样的
复选框1 文本框1 文本框2
复选框2 文本框1 文本框2
复选框3 文本框1 文本框2
复选框4 文本框1 文本框2
复选框5 文本框1 文本框2
复选框6 文本框1 文本框2

所以当复选框选上的时候比如说选的是2和4这时用delCheck=split(request("复选框"))
时只能得到两个数据如果文本框第一个就开始有值,但没被选上正常应该不被提交,而现在是如何处理
windwl 2006-07-19
  • 打赏
  • 举报
回复
FT
我的方法和楼上的差不多
checkbox的值是
<input name="checkNum" type="checkbox" id="checkNum" value="<%=rs1("id")%>|<%=rs1("name")%>|<%=rs1("sex")%>|<%=rs1("age")%>|<%=rs1("telphone")%>">
后台读的时候不用再从数据库读了
竹林听雨2005 2006-07-19
  • 打赏
  • 举报
回复
主要看这句:<input name="checkNum" type="checkbox" id="checkNum" value="<%=rs1("序号")%>">
将序号(ID)的值赋到复选框上,然后通过我那上面的处理的代码再来获取ID值就行了,
再怎么操作就随你了
竹林听雨2005 2006-07-19
  • 打赏
  • 举报
回复
真是没办法,将所有代码贴出来给你参考吧:

这是前台显示的:

<table width="100%" cellspacing="0" border="1" align="center">
<tr><td width="4%" align="center" class="style6">
<input name="chkAll" type="checkbox" id="chkAll" onclick=CheckAll(this.form) value="checkbox" title="全选/反选">
</td>
<td width="22%">
<div align="center" class="style6"><b>品名</b></div>
</td>

<%
set rs1=server.CreateObject("adodb.recordset")
sql="select * from jdxx order by 有效期"
rs1.open sql,conn,1,1

Do While Not rs1.Eof
if rs1("有效期")<=dateadd("d",90,date()) then
%>
<tr class="tdbg">
<td width="4%">
<input name="checkNum" type="checkbox" id="checkNum" value="<%=rs1("序号")%>">
</td>
<td width="22%">
<%=rs1("品名")%>
</td>
<%
end if
rs1.movenext
loop
%>
</table>
超级大笨狼 2006-07-19
  • 打赏
  • 举报
回复
主要看后台页面page2.asp

这样可以遍历可以查看所有前台的控件返回的东西

测试手段很重要!
超级大笨狼 2006-07-19
  • 打赏
  • 举报
回复
前台页面page1.html:

<FORM action="Page2.asp" method=POST id="form1">
<table id="myTable">
<tr >
<td id="myTd1">
<INPUT type="text" name="text1">内容
</td>
</tr>
</table>
<br/>
<button onclick="doAdd();" >AddRow</button>
<button onclick="doDel();" >DelRow</button>
<button onclick="form1.submit();">OK!</button>
</FORM>

<script>
var i=0;
function doAdd()
{
i=i+1;
var nowTable=document.all.myTable;
var newTr=nowTable.insertRow(i);
var newTd=newTr.insertCell(0);
newTd.innerHTML =myTd1.innerHTML;

//假设名字是随便取的
newTd.getElementsByTagName("INPUT")[0].setAttribute("name","text" + parseInt( Math.random() * 100));

//可以用下面这行测试新名字
alert( newTd.getElementsByTagName("INPUT")[0].getAttribute("name"));
//getAttribute("name"));

}
function doDel()
{
if(i>=1)
{
document.all.myTable.rows(i).removeNode();
i=i-1;
}
else
{
alert("不能全删光!");
}
}
</script>

后台页面page2.asp:

<%

for each myInput in Request.Form
Response.Write myInput
Response.Write "="
Response.Write Request(myInput)
Response.Write "<br/>"
next
%>


  • 打赏
  • 举报
回复
你不用这么详细解释我也明白了,不过没什么特别简单的方法了

其余方法要对你的结构有所变化,比如name的name的用id分开

如:name12

然后request的是时候是request("name"&id) 这样结构的
lijiuhua0721 2006-07-19
  • 打赏
  • 举报
回复
关键不是ID的值,因为如果复选框不选的话,这个值是不会被取到数组里的.
但是对应的文本框的值却会被取到数组了呀,所以他们的位置是串的,如果全选的话肯定上面的程序都没有错,但就是不全选,并且ID的值不一定就从1开始,所以你们的程序我试了不对,
也就是说现在ID的值有5.8.10.12.15等,但是呢现在复选框我选的时候呢,只选了第三个和第五个,也就是ID的值为10.15
而这时的文本框list1的数组的值则存的是 空.空.值.空.值,所以存的时候,因为用ubound(delCheck)取值时会得到2个,所以呢,I是0和1,
下面为什么说免子的程序不对,
如果改成list1(id)的话,这时,对应该的值就应该是list1(10),这时list1是个数组,下标应该到list1(4)所以会出提示为下标越届.
下面是对于boyd1985的回复我不明白的,你这里更本没有文件框存取的说明呀,所以没有明白
请两位大侠详细说明一下,谢谢了
竹林听雨2005 2006-07-19
  • 打赏
  • 举报
回复
<%
sql=""
delCheck=split(request("checkNum")) 'checkNum为复选框名称
for i=0 to ubound(delCheck)
sql=sql&delCheck(i)
next
'得到ID记录,准备取数据
sql2="select * from table where ID in ("&sql&")"
set rs2=conn.execute(sql2)
while not rs2.eof
response.write rs2(0) & "<br>" & rs2(1)'这里显示数据了
rs2.movenext
wend
set rs2=nothing
conn.close
%>


再根据你的实际情况稍作改动吧,如果成功了分我全拿了,呵。
竹林听雨2005 2006-07-19
  • 打赏
  • 举报
回复
抱歉,这个temp在这里是没有什么用途的,我复制代码的时候忘记删除了。

SQL运行时的结果是这样的,主要是取得复选框的ID值,设计时需要将复选框的VALUE值设置为ID值,然后得出如下结果:
sql=2912,818,2481,1410'这些数字都是ID号,在SQL里可以进行查询的。

sql2="select * from table where ID in ("&sql&")"
这就是从表中查询相关的数据了,你也看到sql就是上面的内容,相当于这样写:
sql2="select * from table where ID in (2912,818,2481,1410)
不知道你熟悉不熟悉SQL语句,这样查询的话,可以将这四条记录查询出来,这样你想怎么操作都行了。
lijiuhua0721 2006-07-19
  • 打赏
  • 举报
回复
大侠再帮我看看
dongfangbai 2006-07-19
  • 打赏
  • 举报
回复
文本框1,文本框2在设计上必须与同一行的复选框有关联,如:文本框的name=复选框1的id,要不然实现不了!
竹林听雨2005 2006-07-18
  • 打赏
  • 举报
回复
<%
sql=""
delCheck=split(request("checkNum")) 'checkNum为复选框名称
for i=0 to ubound(delCheck)
sql=sql&delCheck(i)
next
'response.write sql
'得到ID记录,准备取数据
temp=""
sql2="select * from table where ID in ("&sql&")"
set rs2=conn.execute(sql2)
while not rs2.eof
temp1=trim(rs2("name")) '这里取名称
'.......
rs2.movenext
wend

set rs2=nothing
conn.close

response.write temp
%>
lijiuhua0721 2006-07-18
  • 打赏
  • 举报
回复
你说的也对,但如果这是取的是数据库的序号如ID的值为1,2,3,5,7,8该怎么办呀,
lijiuhua0721 2006-07-18
  • 打赏
  • 举报
回复
不行,我的ID的值是取的数据库的ID,也就是说第一个号有可能是58,59,60,如果用他的方法,时list1(id),这里他的下标就起出范围了呀,
你的方法里的,SQL和SLQ1还有那个TEMP=""都是什么意思呀,没看董,我对一般的ASP还能看董,但你写的没看明白
也就是说ID过来的值还要写回这个数据库里,所以这个必须是数据库的编号.
竹林听雨2005 2006-07-18
  • 打赏
  • 举报
回复
兔子的方法可以一试 我那方法也试通过的
lijiuhua0721 2006-07-18
  • 打赏
  • 举报
回复
没明白
windwl 2006-07-18
  • 打赏
  • 举报
回复
最简单的解决方法是
复选框的值设为
"ID|name|sex|age|telphone"

if instr(request.form("id"),",")>0 then
list=split(request.form("id"),",")
for i = 0 to ubound(list)
list1 = split(list(i),"|")
id=list1(0)
name=list1(1)
sex=list1(2)
age=list1(3)
telphone=list1(4)
next
else
list1 = split(request.form("id"),"|")
id=list1(0)
name=list1(1)
sex=list1(2)
age=list1(3)
telphone=list1(4)
end if


lijiuhua0721 2006-07-18
  • 打赏
  • 举报
回复
我已经试过了,开始我想也是但后来一想不对了,象我上面提到的如果不是连序的这样第四位的ID是5,第五位是八时,这样就不对了呀
加载更多回复(5)

28,402

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧