日期:2014-05-17  浏览次数:21407 次

复选框选中后赋值,为什么只能赋值第一个数据
index.asp页面

<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
var checkflag = "false";
function check(field) {
if (checkflag == "false") {
for (i = 0; i < field.length; i++) {
field[i].checked = true;}
checkflag = "true";
return "Uncheck All"; }
else {
for (i = 0; i < field.length; i++) {
field[i].checked = false; }
checkflag = "false";
return "Check All"; }
}
// End -->

function IsCheck()
{
 var check=document.getElementById("check");
 var btn=document.getElementById("btn1");
 if(check.checked){
  btn.disabled=false;
 }
 else{
  btn.disabled=true;
 }
}

</script>


复选框
<form name="form1" method="post" action="update.asp">
<input type="checkbox" name="cid" value="<%=rs("id")%>">'复选框只有一个,是重复的.

全选复选框
<input type="checkbox" onClick="this.value=check(this.form.cid)">
<input type="submit" name=ok value="发布" >

//////////
update.asp页面
<%
Dim arr,i,addtime
cids = request.Form("cid")
if cids <> "" then
  arr = split(cids,",")
  for i=0 to ubound(arr)
  '插入数据库代码
addtime=date()
 set rs = server.CreateObject("adodb.RECORDSET")
 sql = "select * from t_book"
 rs.open sql,conn,1,3
 rs("state")=1
 rs("addtime")=now()
 rs.update
 rs.close
 set rs = nothing
  next
end if
Response.Write "<center>修改成功<br><br><br>"  
  Response.Write "<a href = index.asp>返回</a>"  
  %>

请各位高手帮忙看看哪里出错,就算全选和不选,发布后都只能修改数据库中的第一条数据,不知道哪里出错了..
想实现的功能很简单,就是选中之后赋值给state=1,并且修改addtime.

------解决方案--------------------
cids 在表中对应哪个在字段?如果是id:
VBScript code
<%
cids = request.Form("cid")
'Access用addtime=Now() SQL server用 addtime=GetDate()
sql = "update t_book SET state=1, addtime=Now() WHERE id IN(" & cids & ")"
'sql = "update t_book SET state=1, addtime=GetDate() WHERE id IN(" & cids & ")"
conn.Execute sql
conn.close
Set conn = Nothing
Response.Write "<center>修改成功<br><br><br>" 
Response.Write "<a href = index.asp>返回</a>"   
%>

------解决方案--------------------
直接document.form,这样获取到整个form表单
然后遍历表单,将所有的checkbox拿到,然后就可用针对每个 checkbox进行处理
------解决方案--------------------
楼主先测试下多个选中时提交后获得的cids的值是什么,如果是"1,2,3" 这样的多个就说明表单提交没有问题,如果只有一个数字的就说明表单构建有问题。
表单应该有类似这样的内容<input type="checkbox" name="cid" value="1"/><input type="checkbox" name="cid" value="2"/><input type="checkbox" name="cid" value="3"/>
如果表单提交没有问题,那提交语句就像4楼说的一样
sql = "update t_book SET state=1, addtime=Now() WHERE id IN(" & cids & ")"
一句就可以了,不需要分割cids再循环