<script>
var object = new Object(); function t_onchange(obj){
var s = document.getElementById("s1").value;
if(typeof(object[s])=='undefined'){
object[s]=new Object();
}
object[s][obj.id]=obj.value;
} function s_change(){
for(var i=1;i <7;i++){
document.getElementById(i).checked=false;
} var s = document.getElementById("s1").value;
if(typeof(object[s])!='undefined'){
for(var i in object[s]){
document.getElementById(i).checked=object[s][i];
}
}
}
</script> 第
<select name="week" id="s1" onchange="s_change()">
<%
for i=1 to 7
response.Write " <option value='"&i&"'>"&i
NEXT
%>
</select>
周
<table>
<tr>
<td>星期一 </td> <td>星期二 </td> <td>星期三 </td> <td>星期四 </td> <td>星期五 </td> <td>星期六 </td> <td>星期日 </td>
</tr>
<tr>
<% for a=1 to 7
response.Write" <td> <input type='checkbox' name='"&a&"' id='"&a&"' onClick='t_onchange(this)'> </td>"
next
%>
</tr>
</table>上面的js是实现:有一个下拉菜单---第几周(初始化为第一周) 然后下面就是一个选课的表格,都是些选择按钮,当我在第一周选择了几节课,再选择第二周时,页面会刷新选课的表格(初始化),但第一周选的记录还会保存(不明白可以用运行下代码)
现在我想实现别人选过的就不能选:比如说别人已经成功申请了第一周的星期三,星期四。后来选的人就不能再选这一周的星期三,四!我想的方法是:记录下他在哪些周上选过课(遍历object对象(var i in object)),再根据周查选过什么(var j in object[i]),记录下id值,再在数据库上查询是否有相关记录!但不知道能行不!代码我不知道如何写!请高手帮忙谢谢!要代码的!
var object = new Object(); function t_onchange(obj){
var s = document.getElementById("s1").value;
if(typeof(object[s])=='undefined'){
object[s]=new Object();
}
object[s][obj.id]=obj.value;
} function s_change(){
for(var i=1;i <7;i++){
document.getElementById(i).checked=false;
} var s = document.getElementById("s1").value;
if(typeof(object[s])!='undefined'){
for(var i in object[s]){
document.getElementById(i).checked=object[s][i];
}
}
}
</script> 第
<select name="week" id="s1" onchange="s_change()">
<%
for i=1 to 7
response.Write " <option value='"&i&"'>"&i
NEXT
%>
</select>
周
<table>
<tr>
<td>星期一 </td> <td>星期二 </td> <td>星期三 </td> <td>星期四 </td> <td>星期五 </td> <td>星期六 </td> <td>星期日 </td>
</tr>
<tr>
<% for a=1 to 7
response.Write" <td> <input type='checkbox' name='"&a&"' id='"&a&"' onClick='t_onchange(this)'> </td>"
next
%>
</tr>
</table>上面的js是实现:有一个下拉菜单---第几周(初始化为第一周) 然后下面就是一个选课的表格,都是些选择按钮,当我在第一周选择了几节课,再选择第二周时,页面会刷新选课的表格(初始化),但第一周选的记录还会保存(不明白可以用运行下代码)
现在我想实现别人选过的就不能选:比如说别人已经成功申请了第一周的星期三,星期四。后来选的人就不能再选这一周的星期三,四!我想的方法是:记录下他在哪些周上选过课(遍历object对象(var i in object)),再根据周查选过什么(var j in object[i]),记录下id值,再在数据库上查询是否有相关记录!但不知道能行不!代码我不知道如何写!请高手帮忙谢谢!要代码的!
解决方案 »
- 如何批量抓取,sogou结果页的链接?
- 求救!急!json从数据库读取数据。
- 求JS入门视频 急急急
- 帮忙看看这个JavaScript提交表单的错误
- new Array 和 new Array() 有区别吗?
- 提交form时,怎么判断checkbox有没有被选中
- 特急!!马上结贴!!
- 100分请教iframe问题!如何屏蔽iframe中的右键?
- 在一个web项目中如何引入jquery,是否只要引入一次就ok?引入jquery包含哪些文件,给个实例吧
- 跪求大佬,搞一下午了怎么不行 Tomcat启动不了
- javascript递归的疑惑
- 使用Javascript能实现操作Domino对象收发邮件吗?(很具有挑战性的问题)
单一行的checkbox不容易去判断,为何不多行实现呢?从数据库里查出来如果哪周选上了哪些日期,就把这些日期屏蔽掉,这样就不用考虑其它的了
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=unicode"><BODY>
<TABLE WIDTH="75%" BORDER=1 CELLSPACING=1 CELLPADDING=1>
<TR align=center>
<TD></TD>
<TD>星期一</TD>
<TD>星期二</TD>
<TD>星期三</TD>
<TD>星期四</TD>
<TD>星期五</TD>
<TD>星期六</TD>
<TD>星期日</TD>
</TR>
<TR align=center>
<TD><INPUT type=checkbox id='week0' name='week' value='week0'>第一周</TD>
<TD><INPUT type=checkbox id='day0_0' name='day0' value='0_0'></TD>
<TD><INPUT type=checkbox id='day0_1' name='day0' value='0_1'></TD>
<TD><INPUT type=checkbox id='day0_2' name='day0' value='0_2' disabled></TD>
<TD><INPUT type=checkbox id='day0_3' name='day0' value='0_3' disabled></TD>
<TD><INPUT type=checkbox id='day0_4' name='day0' value='0_4'></TD>
<TD><INPUT type=checkbox id='day0_5' name='day0' value='0_5'></TD>
<TD><INPUT type=checkbox id='day0_6' name='day0' value='0_6' disabled></TD>
</TR>
<TR align=center>
<TD><INPUT type=checkbox id='week1' name='week' value='week1'>第二周</TD>
<TD><INPUT type=checkbox id='day1_0' name='day1' value='1_0' disabled></TD>
<TD><INPUT type=checkbox id='day1_0' name='day1' value='1_1'></TD>
<TD><INPUT type=checkbox id='day1_0' name='day1' value='1_2'></TD>
<TD><INPUT type=checkbox id='day1_0' name='day1' value='1_3'></TD>
<TD><INPUT type=checkbox id='day1_0' name='day1' value='1_4' disabled></TD>
<TD><INPUT type=checkbox id='day1_0' name='day1' value='1_5'></TD>
<TD><INPUT type=checkbox id='day1_0' name='day1' value='1_6'></TD>
</TR>
<TR align=center>
<TD><INPUT type=checkbox id='week2' name='week' value='week2'>第三周</TD>
<TD><INPUT type=checkbox id='day2_0' name='day2' value='0_0'></TD>
<TD><INPUT type=checkbox id='day2_1' name='day2' value='2_1'></TD>
<TD><INPUT type=checkbox id='day2_2' name='day2' value='2_2' disabled></TD>
<TD><INPUT type=checkbox id='day2_3' name='day2' value='2_3'></TD>
<TD><INPUT type=checkbox id='day2_4' name='day2' value='2_4'></TD>
<TD><INPUT type=checkbox id='day2_5' name='day2' value='2_5'></TD>
<TD><INPUT type=checkbox id='day2_6' name='day2' value='2_6'></TD>
</TR>
<TR align=center>
<TD><INPUT type=checkbox id='week3' name='week' value='week3'>第四周</TD>
<TD><INPUT type=checkbox id='day3_0' name='day3' value='3_0' disabled></TD>
<TD><INPUT type=checkbox id='day3_1' name='day3' value='3_1'></TD>
<TD><INPUT type=checkbox id='day3_2' name='day3' value='3_2'></TD>
<TD><INPUT type=checkbox id='day3_3' name='day3' value='3_3' disabled></TD>
<TD><INPUT type=checkbox id='day3_4' name='day3' value='3_4'></TD>
<TD><INPUT type=checkbox id='day3_5' name='day3' value='3_5'></TD>
<TD><INPUT type=checkbox id='day3_6' name='day3' value='3_6' disabled></TD>
</TR>
<TR align=center>
<TD><INPUT type=checkbox id='week4' name='week' value='week4'>第五周</TD>
<TD><INPUT type=checkbox id='day4_0' name='day4' value='4_0'></TD>
<TD><INPUT type=checkbox id='day4_1' name='day4' value='4_1' disabled></TD>
<TD><INPUT type=checkbox id='day4_2' name='day4' value='4_2'></TD>
<TD><INPUT type=checkbox id='day4_3' name='day4' value='4_3'></TD>
<TD><INPUT type=checkbox id='day4_4' name='day4' value='4_4'></TD>
<TD><INPUT type=checkbox id='day4_5' name='day4' value='4_5' disabled></TD>
<TD><INPUT type=checkbox id='day4_6' name='day4' value='4_6'></TD>
</TR>
<TR align=center>
<TD><INPUT type=checkbox id='week5' name='week' value='week5'>第六周</TD>
<TD><INPUT type=checkbox id='day5_0' name='day5' value='5_0'></TD>
<TD><INPUT type=checkbox id='day5_1' name='day5' value='5_1'></TD>
<TD><INPUT type=checkbox id='day5_2' name='day5' value='5_2'></TD>
<TD><INPUT type=checkbox id='day5_3' name='day5' value='5_3' disabled></TD>
<TD><INPUT type=checkbox id='day5_4' name='day5' value='5_4'></TD>
<TD><INPUT type=checkbox id='day5_5' name='day5' value='5_5' disabled></TD>
<TD><INPUT type=checkbox id='day5_6' name='day5' value='5_6'></TD>
</TR>
<TR align=center>
<TD><INPUT type=checkbox id='week6' name='week' value='week6'>第七周</TD>
<TD><INPUT type=checkbox id='day6_0' name='day6' value='6_0'></TD>
<TD><INPUT type=checkbox id='day6_1' name='day6' value='6_1' disabled></TD>
<TD><INPUT type=checkbox id='day6_2' name='day6' value='6_2'></TD>
<TD><INPUT type=checkbox id='day6_3' name='day6' value='6_3'></TD>
<TD><INPUT type=checkbox id='day6_4' name='day6' value='6_4'></TD>
<TD><INPUT type=checkbox id='day6_5' name='day6' value='6_5'></TD>
<TD><INPUT type=checkbox id='day6_6' name='day6' value='6_6'></TD>
</TR>
</TABLE></BODY></HTML>
灰掉的复选框是模拟被别人选过的。实际是从数据库里读出来。一会有时间的话,我把实现代码简单写一下
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><BODY>
<form method=post action="写库.asp" name=frm>
<TABLE WIDTH="75%" BORDER=1 CELLSPACING=1 CELLPADDING=1>
<TR align=center>
<TD></TD><TD>星期一</TD> <TD>星期二</TD> <TD>星期三</TD><TD>星期四</TD><TD>星期五</TD><TD>星期六</TD><TD>星期日</TD>
</TR>
<%
'这里先去先从数据库把数据库里的有关课程选择占用的内容读出来
sql="............"
set rs=server.CreateObject("adodb.recordset")
rs.Open sql,conn,1,1
s=""
if not rs.eof then
for i=0 to rs.RecordCount -1
'这里根据你数据库表的结构读取数据,把被占用的星期和天组合成字符串,如:
's="3_2,4_5,0_2"'表示第四周的周三、第五周的周六和第一周的周三被占用
for j=1 to rs.Fields.count-1
if 被占用 then
if s="" then s=i&"_"&j else s=s&","&i&"_"&j
end if
next
rs.movenext
next
for i=0 to 6
%>
<TR align=center>
<TD><INPUT type=checkbox id='week<%=i%>' name='week' value='week<%=i%>'>第<%=i+1%>周</TD>
<%for j=0 to 6%>
<TD><INPUT type=checkbox id='day<%=i&"_"&j%>' name='day<%=i%>' value='<%=i&"_"&j%>' <%=GetDisabled(,i,j)%>></TD>
<%next%>
</TR>
<%next%>
</TABLE>
<input type=submit name=s value="提交">
</form>
</BODY></HTML>
<%
function GetDisabled(m,n)
dim tempStr
s=","&s&","'两端加","防止误判
tempStr=","&m&"_"&n&","
if instr(s,tempStr)>0 then GetDisabled=" disabled" else GetDisabled=""
'关键就是上面的这个判断条件,需要自己根据数据库结构动脑筋
end function
%>
<table border="1" align="center" width="100%" bordercolor="#d5fcfc">
<tr><td width="60px" ></td><td width="50px" >星期一</td><td width="50px">星期二</td><td width="50px" >星期三</td><td width="50px" >星期四</td><td width="50px" >星期五</td><td width="50px" >星期六</td><td width="50px">星期日</td></tr>
<tr><td width="60px">第1、2节</td>
<% for a=1 to 7
response.Write"<td width='50px'><input type='checkbox' name='"&a&"' id='b"&a&"' onClick='t_onchange(this)'></td>"
next
%>
</tr>
<tr><td width="60px">第3、4节</td>
<% for b=8 to 14
response.Write"<td width='50px'><input type='checkbox' name='"&b&"' id='b"&b&"' onClick='t_onchange(this)'></td>"
next
%></tr>
<tr><td width="60px">第5、6节</td>
<% for c=15 to 21
response.Write"<td width='50px'><input type='checkbox' name='"&c&"' id='b"&c&"' onClick='t_onchange(this)'></td>"
next
%></tr>
<tr><td width="60px">第7、8节</td>
<% for d=22 to 28
response.Write"<td width='50px'><input type='checkbox' name='"&d&"' id='b"&d&"' onClick='t_onchange(this)'></td>"
next
%></tr>
<tr><td width="60px">第9、10节</td>
<% for e=29 to 35
response.Write"<td width='50px'><input type='checkbox' name='"&e&"'' id='b"&e&"' onClick='t_onchange(this)'></td>"
next
%></tr>
<tr><td width="60px">第11、12节</td>
<% for f=36 to 42
response.Write"<td width='50px'><input type='checkbox' name='"&f&"' id='b"&f&"' onClick='t_onchange(this)'></td>"
next
%></tr>
<tr><td width="60px">第13、14节</td>
<% for g=43 to 49
response.Write"<td width='50px'><input type='checkbox' name='"&g&"' id='b"&g&"' onClick='t_onchange(this)'></td>"
next
%></tr>
<tr><td width="60px">第15、21节</td>
<% for h=50 to 56
response.Write"<td width='50px'><input type='checkbox' name='"&h&"' id='b"&h&"' onClick='t_onchange(this)'></td>"
next
%>
</table>也就是说,非要用我开始的JS功能!那怎样实现
for(var i in object) {
stri="<dl><dt>第"+i+"周:"; for(var j in object[i]){
str=str+"<dd>"+window.docheck(j);
mystri=mystri+j+",";
}
st=st+stri+str+ss;
str="";
}
document.getElementById("d1").value=st;document.form2.submit();
}我在提交时触发这个函数!如果选课了!会换成这个字符串:
第1周:
星期二 第11、12节
星期四 第15-21节
星期六 第7、8节
第3周:
星期一 第3、4节
星期二 第9、10节
来提交,在后台来作为把内容灰掉的依据,不过我就是不知道应该如何写!
<script>
var object = new Object();
var ss="</dl>";
var str="";
var st="";
var mystri="";function t_onchange(obj){
var s = document.getElementById("s1").value;
if(typeof(object[s])=='undefined'){
object[s]=new Object();
}
object[s][obj.id]=obj.value;
} function s_change(){
for(var i=1;i <57;i++){
document.getElementById("b"+i).checked=false;
} var s = document.getElementById("s1").value;
if(typeof(object[s])!='undefined'){
for(var i in object[s]){
document.getElementById(i).checked=object[s][i];
}
}
}
function doit(){
for(var i in object) {
stri="<dl><dt>第"+i+"周:"; for(var j in object[i]){
str=str+"<dd>"+window.docheck(j);
mystri=mystri+j+",";
}
st=st+stri+str+ss;
str="";
}
document.getElementById("d1").value=st;document.form2.submit();
}
</script>
问题远不止这些,比如:我选择了:
第1周:
星期二 第11、12节
星期四 第15-21节
星期六 第7、8节
第3周:
星期一 第3、4节
星期二 第9、10节
提交后我突然发现选错了或者想换换,这么办?这个时候针对我所选的就不能灰掉,而是“勾上”,但对其他人就是灰掉。所以,建议你把流程通盘考虑好,然后动手建库,最后再写代码吧我建议的表结构:
一、考虑类似无限分类或三级分类的原理;
或者,
二、一张表存储上述信息:
[CourseSelect]
序号 用户ID 选择的课程 备注
ID(自增) userID(数字) cSelected(文本) re(文本)
1 1 2_3
2 1 3_6
3 2 0_1
4 3 5_0
-----------------------------------------------------------
5_0:表示选了第六周星期一的课
(如果还有节,再加_,如5_0_11|12 ,表示第六周星期一第十一、十二接)
仅供参考
序号 id(自增)
申请人的名字 user(文本)
申请情况 qingkuang(文本)
其他无关重要的我不写出来了而我上面的st字符串是在加入到qingkuang这个字段里的!读取st出来的数据是这样:
第1周:
星期二 第11、12节
星期四 第15-21节
星期六 第7、8节
第3周:
星期一 第3、4节
星期二 第9、10节 我的意思是:如果验证的话,因为周可以单独读取,选课情况也可以单独读取,可以另外组成一个有规律的字符串,加入到数据库,作为验证之用,关键是如何写这个字符串!注意我的是第几周,星期几的第几节!!
哪有你这么建表使用表的,呵呵。用户表就写用户信息,用它的ID和其他表的userID关联
用户表:
[userInfo]
ID(数字) userName(文本) rname(文本,可选)。
1 zs 张三
2 ls 李四
3 wemz 王二麻子==========================================
[CourseSelect]
序号 用户ID 选择的课程 备注
ID(自增) userID(数字) cSelected(文本) re(文本)
1 1 2_3
2 1 3_6
3 2 0_1
4 3 5_0
序号 用户ID 选择的课程 备注
ID(自增) userID(数字) cSelected(文本) re(文本)
1 1 2_3
2 1 3_6 要代码!谢谢
序号 用户ID 选择的课程 备注
ID(自增) userID(数字) cSelected(文本) re(文本)
1 1 2_3
2 1 3_6 要代码!谢谢
<form method=post action="写库.asp" name=frm>
<TABLE WIDTH="75%" BORDER=1 CELLSPACING=1 CELLPADDING=1>
<TR align=center>
<TD></TD><TD>星期一</TD> <TD>星期二</TD> <TD>星期三</TD><TD>星期四</TD><TD>星期五</TD><TD>星期六</TD><TD>星期日</TD>
</TR>
<%
dim s
s="第1-2节,第3-4节,第5-6节,第7-8节,第9-10节,第11-12节,第13-14节,第15-21节"
arr=split(s,",")
for i=0 to 6
%>
<TR align=center>
<TD>第<%=i+1%>周</TD>
<%for j=0 to 6%>
<TD>
<%for m=0 to 7%>
<%=arr(m)%><INPUT type=checkbox id='day<%=i&"_"&j&"_"m%>' name='sel' value='<%=i&"_"&j&"_"m%>' <%=GetDisabled(,i,j)%>><br>
<%next%>
</TD>
<%next%>
</TR>
<%next%>
</TABLE>
<input type=submit name=s value="提交">
</form>
你先把这个表格实现就明白我什么意思了,根本不用乱七八糟的JS数组,直接提交,在后台得到参数
sel=request.form("sel")
它是类似于"0_2_7, 2_4_2, 6_0_3......."这样的字串,把空格替换掉以后split成数组。结合我建议的数据库结构后面怎么写库还成问题吗?