<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值,再在数据库上查询是否有相关记录!但不知道能行不!代码我不知道如何写!请高手帮忙谢谢!要代码的!

解决方案 »

  1.   

    需求又多了?记得lz上次也问过-^-
    单一行的checkbox不容易去判断,为何不多行实现呢?从数据库里查出来如果哪周选上了哪些日期,就把这些日期屏蔽掉,这样就不用考虑其它的了
      

  2.   

    取出数据去判断,如第一周选了周一,周二,就把checkbox的周一和周二屏蔽掉
      

  3.   

    如果从数据库去取的话,我觉得比较麻烦,如果很多人申请就不好去查了!所以我想在申请提交成功后,在处理页面上(比如说申请是a.asp,处理验证并加入数据库是b.asp)触发这个屏蔽,不知道能实现不?如果能实现,请给出代码我!我JS不怎么行
      

  4.   

    你想的太复杂了。给你个界面效果图参考
    <!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>
    灰掉的复选框是模拟被别人选过的。实际是从数据库里读出来。一会有时间的话,我把实现代码简单写一下
      

  5.   


    <!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
    %>
      

  6.   

    如果我的表单是这样呢:
        <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功能!那怎样实现
      

  7.   

    我知道,我的意思是说:开始的JS功能必须有,不过在别人选了以后,checkbox按钮会disabled!能这样实现么
      

  8.   

    呵呵。我给你的是页面加载时通过服务器端读库直接就把别人选过的给灰掉了;你的那些开始的JS作用无非是记录当前用户已经选择的每周的星期X的状态,没其他作用吧?我没看到哪些代码是把别人选择过的disabled了当然,你要根据库结构来组织页面的控件结构与排列方式,以便于提交后方便的写库。我只是给你个不同的思路而已
      

  9.   

    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();
    }我在提交时触发这个函数!如果选课了!会换成这个字符串:
    第1周:
          星期二 第11、12节
           星期四 第15-21节
           星期六 第7、8节
    第3周:
          星期一 第3、4节
           星期二 第9、10节
      

  10.   

    st就是这个字符串!将它用hidden来提交!
      

  11.   

    恩!st这个字符串就是这个结构!不过为了方便验证!可以重新换个方法写!然后写了这个结构也用hidden
    来提交,在后台来作为把内容灰掉的依据,不过我就是不知道应该如何写!
      

  12.   

    这是全部的JS代码:
    <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> 
      

  13.   

    真有你的,代码写了这么多,这么表还没建?
    问题远不止这些,比如:我选择了:
    第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 ,表示第六周星期一第十一、十二接)
    仅供参考
      

  14.   

    晕!我表已经建好了!结构是这样:
    序号 id(自增)
    申请人的名字 user(文本)
    申请情况   qingkuang(文本)
    其他无关重要的我不写出来了而我上面的st字符串是在加入到qingkuang这个字段里的!读取st出来的数据是这样:
    第1周: 
          星期二 第11、12节 
          星期四 第15-21节 
          星期六 第7、8节 
    第3周: 
          星期一 第3、4节 
          星期二 第9、10节 我的意思是:如果验证的话,因为周可以单独读取,选课情况也可以单独读取,可以另外组成一个有规律的字符串,加入到数据库,作为验证之用,关键是如何写这个字符串!注意我的是第几周,星期几的第几节!!
      

  15.   

    晕菜菜~~~
    哪有你这么建表使用表的,呵呵。用户表就写用户信息,用它的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
      

  16.   

    难怪你不知道怎么DISABLED了,按照你现在的表结构太难了,改吧
      

  17.   

    对噢!我明白你的意思了!我问问:选的记录都在object[][]里面,如何插入这么多记录,像你上面的
    序号      用户ID      选择的课程        备注 
    ID(自增) userID(数字)    cSelected(文本)  re(文本) 
    1            1            2_3            
    2            1            3_6 要代码!谢谢
      

  18.   

    如何实现:选的记录都在object[][]里面,如何插入这么多记录,像你上面的 
    序号      用户ID      选择的课程        备注 
    ID(自增) userID(数字)    cSelected(文本)  re(文本) 
    1            1            2_3            
    2            1            3_6 要代码!谢谢
      

  19.   


    <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成数组。结合我建议的数据库结构后面怎么写库还成问题吗?