javascript判断checkbox多选框数目

2008-07-25 00:05:34 0 84
今天要用到一个js程序,要实现以下两点功能(checkbox是asp生成的,并非静态的html):

1.判断checkbox的数目,当超过设置的数目时显示只能选这么多,即时控制,而不是提交时判断;

2.提交form的时候,判断是否选择了要求的数目,否则不予提交。


写了好久,终于试成功了,因为asp生成的input,name不能相同,不然以后不好控制,所以document.getElementsByName不好取值,于是换思路写。

以下是用静态页面测试的代码(第二个函数也可以使用参数或者name的值):
<script LANGUAGE="JavaScript">function doCheck(ctrl,checkboxname,MaxSelect,MaxCheckbox) {
   var NumChecked = 0;
   var thisCtrl;
   var i;
   i = 1;
   while ((i <= MaxCheckbox) && (NumChecked <= MaxSelect)) {
   thisCtrl = eval("ctrl.form." + checkboxname + i);
   if ((thisCtrl != ctrl) && (thisCtrl.checked)) {
   NumChecked++;
   }
   i++;
   }
   if (NumChecked == MaxSelect) {
   ctrl.checked = false;
   alert("最多只能选"+MaxSelect+"项!");
   }
   }
function  checknum(select1,select2,max1,max2){
    var count1 = 0;
    var count2 = 0;
    for(var i=1;i<=max1;i++){
    if(document.getElementById("aaa"+i).checked){
    count1 = count1 + 1;
        }
        }
    for(var j=1;j<=max2;j++){
    if(document.getElementById("bbb"+j).checked){
    count2 = count2 + 1;
        }
        }        
        if(count1<select1) {
        alert('第一排请选'+select1+'项');
        return false;
        }
        if(count2<select2) {
        alert('第二排请选'+select2+'项');
        return false;
        }
        document.form1.submit();
  }
  
   // -->
</script>
<form name="form1" action="?aaa=1" method="post">
<input type="checkbox" name="aaa1" id="aaa1" value="111" onclick="doCheck(this,'aaa',2,6)">111
<input type="checkbox" name="aaa2" id="aaa2" value="211" onclick="doCheck(this,'aaa',2,6)">211
<input type="checkbox" name="aaa3" id="aaa3" value="311" onclick="doCheck(this,'aaa',2,6)">311
<input type="checkbox" name="aaa4" id="aaa4" value="411" onclick="doCheck(this,'aaa',2,6)">411
<input type="checkbox" name="aaa5" id="aaa5" value="511" onclick="doCheck(this,'aaa',2,6)">511
<input type="checkbox" name="aaa6" id="aaa6" value="611" onclick="doCheck(this,'aaa',2,6)">611(第一排必须选2项)
<br><br><br>
<input type="checkbox" name="bbb1" id="bbb1" value="711" onclick="doCheck(this,'bbb',4,8)">711
<input type="checkbox" name="bbb2" id="bbb2" value="811" onclick="doCheck(this,'bbb',4,8)">811
<input type="checkbox" name="bbb3" id="bbb3" value="911" onclick="doCheck(this,'bbb',4,8)">911
<input type="checkbox" name="bbb4" id="bbb4" value="121" onclick="doCheck(this,'bbb',4,8)">121
<input type="checkbox" name="bbb5" id="bbb5" value="131" onclick="doCheck(this,'bbb',4,8)">131
<input type="checkbox" name="bbb6" id="bbb6" value="141" onclick="doCheck(this,'bbb',4,8)">141
<input type="checkbox" name="bbb7" id="bbb7" value="151" onclick="doCheck(this,'bbb',4,8)">151
<input type="checkbox" name="bbb8" id="bbb8" value="161" onclick="doCheck(this,'bbb',4,8)">161(第二排必须选4项)
<br><br><br>
<input type="button" name="submit1" value="okokokok" onclick="return checknum(2,4,6,8);document.form1.submit();">
</form>
复制代码保存为.HTM可以测试效果!

关于作者

评论0次

要评论?请先  登录  或  注册