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

关于控制嵌套repeater控件中checkbox的选中的个数
我有一套试卷,试卷中的每道题都有4个选项,通过嵌套repeater控件的方法来显示这份试卷。每道题是个2选题,我希望通过javascript来控制用户每道题下的选项对应的复选框只能选择两个,多了就提示警告。
我想问两个问题:
1、我原先希望可以在用户答每道题的时候如果多选了,就提示出错,但是想不到应该怎么做?不知哪位有什么好的方法可以介绍一下,万分感谢。
2.后来我在表单中,添加onsubmit属性,调用js函数,但是不论我多答还是少答,总是提示我少选了,请各位帮忙看看,到底哪里有问题?对应js代码如下:
本人菜鸟一个,请各位多多指教!!!
JScript code

    function ControlNum() {
        var count = 0;

        var cArray = document.getElementsByTagName("input");
        var i=0;
        var option_number = <%=option_num %>;
        var result_number =<%=result_num %>;
        var item_number = <%=item_num %>;
        var total = result_number*option_number;
        while(i<cArray.length){
        count = 0
      for(var j = 0;j<result_number;j++)
      {
               if (cArray[i].type == 'checkbox' && cArray[i].checked) {
                   count++;
                 
               }
               i++;
     
        }
        if(count == option_number)
        {
          continue;
        
        }
        else{
        if(count > option_number)
            {
            alert("注意题目类型,请勿多选!");
            return false;
            break;
            }
            else
            {
            alert("注意题目类型,请勿少选!");
            return false;
            break;
            }
        }
     }
}



------解决方案--------------------
将你的checkbox 分组 每一题的答案分为一组
 js 
document.getElementsByTagName("当前组name值");
------解决方案--------------------
以下代码仅供参考
HTML code

<asp:Repeater ID="Repeater1" runat="server" 
            onitemdatabound="Repeater1_ItemDataBound">
            <ItemTemplate>
                题目:
                第<%# Eval("question") %>题
                <ul>
                        <asp:Repeater ID="rptAnswer" runat="server">
                            <ItemTemplate>
                                
                                    <li>
                                        <input id="<%# Eval("answergroup") %>" name="<%# Eval("answergroup") %>" type="checkbox" onclick="checkNum('<%# Eval("answergroup") %>')" />
                                    <%# Eval("answer") %></li>
                                
                            </ItemTemplate>
                        </asp:Repeater>
                  </ul>  
            </ItemTemplate>
        </asp:Repeater>

        <script language="javascript" type="text/javascript">
            function checkNum(chkname) {
                var chkanswer = document.getElementsByName(chkname);
                var answernum = chkanswer.length;
                var falg = 0;
                for (var i = 0; i < answernum; i++) {
                    if (chkanswer[i].checked) {
                        falg++;
                        if (falg > 2) {
                            chkanswer[i].checked = false;
                        }
                    }
                }
            }
        </script>