javascript判断checkbox多选框数目
今天要用到一个js程序,要实现以下两点功能(checkbox是asp生成的,并非静态的html):
写了好久,终于试成功了,因为asp生成的input,name不能相同,不然以后不好控制,所以document.getElementsByName不好取值,于是换思路写。
以下是用静态页面测试的代码(第二个函数也可以使用参数或者name的值):复制代码保存为.HTM可以测试效果!
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>
评论0次