<script language="javascript" type="text/javascript">var l = 0;
var strTemp = "";
var x = 0;
var strChar = "";
var IsCheck = false;
var strCheck = "";
var arr=document.all.tags("input");     //取出checkbox集合 function maxchk(obj)
{
      var txt=document.getElementById("lblJobType");
      txt.innerText="";
      var count = 0;
      for(var i=0;i<arr.length-4;i++)
      {
           var strTempArray = new Array();
           var strTestArray = new Array();  
           if(arr[i].type=="checkbox")
           {    
                 if(arr[i].checked)
                 {          
                       if( txt.innerText=="")
                       { 
                            if ( strChar == "" ) 
                            {
                               txt.innerText=arr[i].value+strChar;
                            }
                            else
                            {
                                if ( IsCheck )
                                {
                                    //alert(strChar);
                                    strTempArray = strChar.split(",");
                                    if ( strTempArray.length < 5 )
                                    {
                                       txt.innerText=arr[i].value+","+strChar;
                                    }
                                    else if ( strTempArray.length = 5 )
                                    {
                                       var str="";
                                       var strTestArray = new Array();                                             strTestArray = strChar.split(",");                                            for(var k=1;k<arr.length-4;k++)
                                            {
                                                arr[k].disabled = false;
                                            }                                        for ( var n = 0; n < strTestArray.length;n++ )
                                        {
                                            if ( str != "" )
                                            {
                                                str=str+","+strTestArray[n];
                                            }
                                            else
                                            {
                                                str = strTestArray[n];
                                            }
                                        }
                                        txt.innerText = str;
                                    }
                                    strChar = txt.innerText;
                                }
                                else
                                {
                                    strTempArray = strChar.split(",");
                                    if ( strTempArray.length < 5 )
                                    {
                                       txt.innerText=arr[i].value+","+strChar;
                                    }                                    
                                }
                            }
                      }
                      else
                      {                                
                            strTempArray = strChar.split(",");
                            if ( strTempArray.length < 5 )
                            {
                               txt.innerText+=","+arr[i].value;
                            }
                      }
                      strTemp = txt.innerText;
                      var n = txt.innerText;
                      var strArray = new Array();     
                      strArray = n.split(",");      
                      l=strArray.length;              
                      if (l>4)
                      {
                            for(var j=1;j<arr.length-4;j++)
                            {     
                                if ( arr[j].checked )
                                {
                                   arr[j].disabled = false;
                                }
                                else
                                {
                                   arr[j].disabled = true;
                                }
                            }
                            strArrayTemp = strArray;
                            window.alert("您已经选择了5个区域");            
                       }
                       else
                       {                   
                            if( l < 4 )
                            {
                                for(var k=1;k<arr.length-4;k++)
                                {
                                    arr[k].disabled = false;
                                }
                                txt.innerText = strTemp;
                            }
                       }
                       x = l;
                 }
                 else
                 {
                    count ++;
                    strTestArray = strChar.split(",");
                    for ( var m = 0; m < strTestArray.length; m ++ )
                    {   
                         if ( arr[i].value == strTestArray[m] )
                         {
                               strTestArray=strTestArray.del(m);  
                         }
                    }
                    if ( count == arr.length-5 )
                    {
                        for(var k=1;k<arr.length-4;k++)
                        {
                            arr[k].disabled = false;
                        }    
                        if( txt.innerText=="")
                        { 
                            txt.innerText=strChar;                            strTempArray = txt.innerText.split(",");
                            x = strTempArray.length;
                        }
                        else
                        {
                            var strTempArray = new Array();
                            strTempArray = strChar.split(",");
                            if ( strTempArray.length < 5 )
                            {
                               txt.innerText+=","+arr[i].value;
                            }
                            strTempArray = txt.innerText.split(",");
                            x = strTempArray.length;
                        }   
                    }
                  strTemp = txt.innerText;
                    if ( x < 4 )
                    {       
                        for(var k=1;k<arr.length-4;k++)
                        {
                            arr[k].disabled = false;
                        }
                        //txt.innerText = strTemp;
                    }
                 }
            }
        } 
}

解决方案 »

  1.   


    Array.prototype.del=function(n)
    {  //n表示第几项,从0开始算起。
       //prototype为对象原型,注意这里为对象增加自定义方法的方法。
       //alert("啊啊");
       if(n<0)  //如果n<0,则不进行任何操作。
        return this;
       else
        return this.slice(0,n).concat(this.slice(n+1,this.length));
        /*
          concat方法:返回一个新数组,这个新数组是由两个或更多数组组合而成的。
                这里就是返回this.slice(0,n)/this.slice(n+1,this.length)
               组成的新数组,这中间,刚好少了第n项。
          slice方法: 返回一个数组的一段,两个参数,分别指定开始和结束的位置。
        */
    }
            function load(MC_ID)
            {
                var strArrayTemp = new Array();  
                var txt=document.getElementById("lblJobType");
                txt.innerText = strTemp; 
                strChar = txt.innerText;
                var  check  =  document.createElement("input");  
                check.type=  "checkbox";  
                check.value=  "1";  
                
                var oHttpReq = new ActiveXObject("MSXML2.XMLHTTP");
                var oDoc = new ActiveXObject("Microsoft.XMLDOM");
                oHttpReq.open("POST", "DropChild.aspx?ClassID="+MC_ID, false);
                oHttpReq.send("");
          
                result = oHttpReq.responseText;
        
                oDoc.loadXML(result);
                items1 = oDoc.selectNodes("//Table/MC_Name"); 
                items2 = oDoc.selectNodes("//Table/MC_ID"); 
                       
                var itemsLength=items1.length;
                var  list  =  document.getElementById("ckSubClass");  
                list.children[0].removeNode(true); 
                var  row  =  list.insertRow();              for(i=0;i<itemsLength;i++)                                                                
                {
                    if  (i >  0  &&  i  %  4  ==  0)  
                    {  
                       row  =  list.insertRow();  
                    }  
                    var check = document.createElement("input");
                    check.type="checkbox";
            
                    check.value=items2[i].text;
                    var cell=row.insertCell();
          
                    cell.appendChild(check);
             
                    var label = document.createElement("span");                  
                    label.innerHTML = items1[i].text;
                    cell.appendChild(label);
                    
                     if ( strChar != "" )
                     {  
                        strArrayTemp = strChar.split(","); 
                        for ( var a = 0; a < strArrayTemp.length; a ++ )
                        {
                            if ( items2[i].text == strArrayTemp[a] )
                            {   
                                check.checked=true;
                                IsCheck = true;
                                if ( strCheck == "" )
                                {
                                    strCheck = items2[i].text;
                                }
                                else
                                {
                                    strCheck +="," + items2[i].text;
                                }
                            }
                         }
                     }
                }  
                if (x>4)
                {
                     for(var j=1;j<arr.length-4;j++)
                     {     
                         if ( arr[j].checked )
                         {
                            arr[j].disabled = false;
                         }
                         else
                         {
                            arr[j].disabled = true;
                         }
                     }        
                 }
                 else if ( x < 4 )
                 {
                    for(var k=1;k<arr.length-4;k++)
                    {
                        arr[k].disabled = false;
                    }
                 }         
          }
    </script>
    </head>
    <body>
        <form id="form1" runat="server"><br />    <table width="96%" border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td height="25" bgcolor="#FFFFFF"> &nbsp;&nbsp;&nbsp;<span class="bigbiaoti">请选择区域</span></td>
      </tr>
      <tr>
        <td bgcolor="#FFFFFF"><div>&nbsp;
            <asp:DropDownList ID="ddlMainClass" runat="server" Width="159px">        
            </asp:DropDownList><asp:Label ID="lblNum" Text="" runat="server" ></asp:Label><br />
            <br />
            <asp:CheckBoxList ID="ckSubClass" runat="server" RepeatColumns="4" RepeatDirection="Horizontal"
                Width="644px" AutoPostBack="False" OnSelectedIndexChanged="ckSubClass_SelectedIndexChanged">
       <asp:ListItem Enabled="false" Text="请选择" Value= "0"></asp:ListItem>
    </asp:CheckBoxList>
            &nbsp;</div></td>
      </tr>
      <tr>
        <td bgcolor="#FFFFFF" style="height: 55px"><table width="98%" border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td bgcolor="#EFEFEF" style="padding-left:20px; padding-bottom:20px; padding-right:20px; padding-top:20px;"><asp:Label ID="lblJobType" Text="" runat="server" ></asp:Label></td>
      </tr>
    </table>
    </td>
      </tr>
      <tr>
        <td height="35" align="right" bgcolor="#FFFFFF"><input type="submit" name="Submit2" value="确定" id="Submit1" language="javascript" onclick="return Submit1_onclick()" />
          &nbsp;&nbsp;&nbsp;
          <input type="button" name="Submit" value="关闭" onclick="javascript:window.close();"/>
          &nbsp;&nbsp;&nbsp;&nbsp;</td>
      </tr>
    </table>
    <INPUT id="HdnSelectedValues" type="hidden" name="HdnSelectedValues" runat="server">
        </form>
    </body>
    </html>    以上为整个页面代码,改动了很多次,现在乱七八糟的!
      

  2.   

    有关“最多只能选5项”的控制在提交之前验证,  
    而不在放在每次修改复选框状态时验证。  
     
    ----  
    另外,提问题请列出别人可以调试的代码,  
    如果你自己都懒得整理出一个可以调试的代码,  
    而期望帮助你的人来为你整理,  
    似乎是不合理期望. 
    =================================================================================
    谢谢JK_10000(JK)的回复
    对这段代码我已经麻木了,我一直是在这上面调试的~
    现在都不知道该怎么整理了!
      

  3.   

    Array.prototype.del=function(n)
    {  //n表示第几项,从0开始算起。
       //prototype为对象原型,注意这里为对象增加自定义方法的方法。
       //alert("啊啊");
       if(n<0)  //如果n<0,则不进行任何操作。
        return this;
       else
        return this.slice(0,n).concat(this.slice(n+1,this.length));
        /*
          concat方法:返回一个新数组,这个新数组是由两个或更多数组组合而成的。
                这里就是返回this.slice(0,n)/this.slice(n+1,this.length)
               组成的新数组,这中间,刚好少了第n项。
          slice方法: 返回一个数组的一段,两个参数,分别指定开始和结束的位置。
        */
    }
    --------------
    以上这个prototype方法多余,
    Array本身就有splice方法:splice 方法
    从一个数组中移除一个或多个元素,如果必要,在所移除元素的位置上插入新元素,返回所移除的元素。
    arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])
    如:
    <script>
    var a=new Array(0,1,2,3,4,5);
    a.splice(1,3);
    alert(a);
    </script>
      

  4.   

    感谢JK_10000(JK)
    我现在的问题是当在不同的省市下总共选择了5个城市后,点击已经选择城市的复选框取消选择该城市,下面的Label中显示的信息不能相应的改变,而且取消后当总共选择的城市少于5个时,所有的复选框没有应该取消失效的状态,但无法取消!