请教一个checkbox连续选择的问题 javascript 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>多选框</title><script> function $A(name){return document.getElementsByName(name);} window.onload=function(){ /** * 复选框限制 * @param {Object} name 复选框的name * @param {Object} maxck 最多复选个数 */ function checks(name,maxck){ var cks = $A(name); function check(){ var t=0; for(i=0;i<cks.length;i++){ if(cks[i].checked){t++;} if(t>maxck){return false;} } return true; } for(i=0;i<cks.length;i++){ cks[i].onclick=function(){ if(!check()){ alert("最多选择"+maxck+"个"); this.checked=false; } } } } checks("cd1",4); //return true; }</script> </head> <body> <form name="form1" method="post" >对这个限制4个选择<br><input type="CHECKBOX" name="cd1" value="A">A<input type="CHECKBOX" name="cd1" value="B">B<input type="CHECKBOX" name="cd1" value="C">C<input type="CHECKBOX" name="cd1" value="D">D<input type="CHECKBOX" name="cd1" value="E">E<input type="CHECKBOX" name="cd1" value="F">F<input type="CHECKBOX" name="cd1" value="G">G<input type="CHECKBOX" name="cd1" value="H">H<input type="CHECKBOX" name="cd1" value="I">I<input type="CHECKBOX" name="cd1" value="J">J<br> </form> </body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>多选框</title><script>function $A(name){return document.getElementsByName(name);}window.onload=function(){/** * 复选框限制 * @param {Object} name 复选框的name * @param {Object} maxck 最多复选个数 */function checks(name,maxck){var value="";var cks = $A(name);function check(){var t=0;for(i=0;i<cks.length;i++){if(cks[i].checked){t++; }if(t>maxck){return false;}}return true;}for(i=0;i<cks.length;i++){cks[i].onclick=function(){if(!check()){alert("最多选择"+maxck+"个");this.checked=false;}}}}checks("cd1",4); }function a(){ var value=""; for (var i=0;i<cd1.length;i++ ){ if(cd1[i].checked){ //判断复选框是否选中 value=value+cd1[i].value + ","; // } } var aa= value.substring(0,value.length-1);if(testStr(aa)!=true){alert("没有连续选择");}else{alert("连续选择(^_^)");}}function testStr(str){ var arrStr = str.split(","); var startStr = arrStr[0].charCodeAt(); for(var i=1,n=arrStr.length;i<n;i++){ if(arrStr[i].charCodeAt() != ++startStr) return false; } return true;}</script> </head><body><form name="form1" method="post" >对这个限制4个选择<br><input type="CHECKBOX" id=cd1 name="cd1" value="A">A<input type="CHECKBOX" id=cd1 name="cd1" value="B">B<input type="CHECKBOX" id=cd1 name="cd1" value="C">C<input type="CHECKBOX" id=cd1 name="cd1" value="D">D<input type="CHECKBOX" id=cd1 name="cd1" value="E">E<input type="CHECKBOX" id=cd1 name="cd1" value="F">F<input type="CHECKBOX" id=cd1 name="cd1" value="G">G<input type="CHECKBOX" id=cd1 name="cd1" value="H">H<input type="CHECKBOX" id=cd1 name="cd1" value="I">I<input type="CHECKBOX" id=cd1 name="cd1" value="J">J<br> <input type=button value='连续选择判断' onclick=a()></form></body></html>加了个按钮来判断 ,看看行么 每个check给个数字 从 1- 10(假定你有10个)然后获取打钩的check的数字4个 且连续 <!doctype html><html><head> <meta charset="utf-8"> <title>checkbox</title> <script src="jquery-1.8.3.min.js"></script></head><body><div class="test-checkbox J-checkbox"> <input type="checkbox" name="cb" data-index="0">1 号 <br/> <input type="checkbox" name="cb" data-index="1">2 号<br/> <input type="checkbox" name="cb" data-index="2">3 号 <br/> <input type="checkbox" name="cb" data-index="3">4 号 <br/> <input type="checkbox" name="cb" data-index="4">5 号 <br/> <input type="checkbox" name="cb" data-index="5">6 号 <br/></div><script> jQuery(function ($) { function checkBox(num) { var $checkBox = $(".J-checkbox").find("input[name=cb]"); $checkBox.on("click", function () { var tempArr = []; //已经被选中的值索引 var saveArr = []; //保存是否连续的值 var checkObj = []; //保存被选中的状态 $checkBox.each(function () { var $this = $(this), $thisIndex = $this.data("index"); if ($this.prop("checked")) { checkObj[$thisIndex] = true; tempArr.push($thisIndex); } else { checkObj[$thisIndex] = false; } }); for (var i = 0, len = checkObj.length; i < len; i++) { if (checkObj[i]) { saveArr.push(i); if (checkObj[i + 1]) { continue; } else { break; } } } if (saveArr.length <= num) { if (saveArr.sort().toString() != tempArr.sort().toString()) { alert("因为不是连续的选中项, 所以不能选中或者取消!"); return false; } } else { alert("大于" + num + "个不能继续连续选中了!"); return false; } }); } checkBox(4); });</script></body></html> WdatePicker 只能选择今天和今天以后的期日的8点到20点的时间 Google出了替代ajax的技术 有一个网页图片url地址,怎样用js将图片直接下载到本地不用提示保存对话框? JS问题 请教: wind.open() 新窗口中写内容的方法 ? 跨域之iframe虫洞 onclick 传参问题 在线问一个window.showModalDialog的问题, 求解决办法? 初学者的问题 JavaScript中是如何定义对象的方法的? 这段JS代码中,为什么获取不了标签的属性?
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>多选框</title>
<script>
function $A(name){return document.getElementsByName(name);}
window.onload=function(){
/**
* 复选框限制
* @param {Object} name 复选框的name
* @param {Object} maxck 最多复选个数
*/
function checks(name,maxck){
var cks = $A(name);
function check(){
var t=0;
for(i=0;i<cks.length;i++){
if(cks[i].checked){t++;}
if(t>maxck){return false;}
}
return true;
}
for(i=0;i<cks.length;i++){
cks[i].onclick=function(){
if(!check()){
alert("最多选择"+maxck+"个");
this.checked=false;
}
}
}
}
checks("cd1",4);
//return true;
}
</script> </head>
<body>
<form name="form1" method="post" >
对这个限制4个选择<br>
<input type="CHECKBOX" name="cd1" value="A">A
<input type="CHECKBOX" name="cd1" value="B">B
<input type="CHECKBOX" name="cd1" value="C">C
<input type="CHECKBOX" name="cd1" value="D">D
<input type="CHECKBOX" name="cd1" value="E">E
<input type="CHECKBOX" name="cd1" value="F">F
<input type="CHECKBOX" name="cd1" value="G">G
<input type="CHECKBOX" name="cd1" value="H">H
<input type="CHECKBOX" name="cd1" value="I">I
<input type="CHECKBOX" name="cd1" value="J">J
<br>
</form>
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>多选框</title>
<script>
function $A(name){return document.getElementsByName(name);}
window.onload=function(){
/**
* 复选框限制
* @param {Object} name 复选框的name
* @param {Object} maxck 最多复选个数
*/
function checks(name,maxck){var value="";var cks = $A(name);
function check(){
var t=0;
for(i=0;i<cks.length;i++){
if(cks[i].checked){t++; }
if(t>maxck){return false;}
}
return true;
}
for(i=0;i<cks.length;i++){
cks[i].onclick=function(){
if(!check()){
alert("最多选择"+maxck+"个");
this.checked=false;
}
}
}}checks("cd1",4);
}function a()
{
var value="";
for (var i=0;i<cd1.length;i++ ){
if(cd1[i].checked){ //判断复选框是否选中
value=value+cd1[i].value + ","; //
}
}
var aa= value.substring(0,value.length-1);if(testStr(aa)!=true)
{
alert("没有连续选择");}
else
{alert("连续选择(^_^)");}}
function testStr(str){ var arrStr = str.split(","); var startStr = arrStr[0].charCodeAt(); for(var i=1,n=arrStr.length;i<n;i++){ if(arrStr[i].charCodeAt() != ++startStr) return false; } return true;}</script> </head>
<body><form name="form1" method="post" >
对这个限制4个选择<br>
<input type="CHECKBOX" id=cd1 name="cd1" value="A">A
<input type="CHECKBOX" id=cd1 name="cd1" value="B">B
<input type="CHECKBOX" id=cd1 name="cd1" value="C">C
<input type="CHECKBOX" id=cd1 name="cd1" value="D">D
<input type="CHECKBOX" id=cd1 name="cd1" value="E">E
<input type="CHECKBOX" id=cd1 name="cd1" value="F">F
<input type="CHECKBOX" id=cd1 name="cd1" value="G">G
<input type="CHECKBOX" id=cd1 name="cd1" value="H">H
<input type="CHECKBOX" id=cd1 name="cd1" value="I">I
<input type="CHECKBOX" id=cd1 name="cd1" value="J">J
<br>
<input type=button value='连续选择判断' onclick=a()>
</form>
</body>
</html>
加了个按钮来判断 ,看看行么
然后获取打钩的check的数字
4个 且连续
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>checkbox</title>
<script src="jquery-1.8.3.min.js"></script>
</head>
<body>
<div class="test-checkbox J-checkbox">
<input type="checkbox" name="cb" data-index="0">1 号 <br/>
<input type="checkbox" name="cb" data-index="1">2 号<br/>
<input type="checkbox" name="cb" data-index="2">3 号 <br/>
<input type="checkbox" name="cb" data-index="3">4 号 <br/>
<input type="checkbox" name="cb" data-index="4">5 号 <br/>
<input type="checkbox" name="cb" data-index="5">6 号 <br/>
</div>
<script>
jQuery(function ($) {
function checkBox(num) {
var $checkBox = $(".J-checkbox").find("input[name=cb]"); $checkBox.on("click", function () {
var tempArr = []; //已经被选中的值索引
var saveArr = []; //保存是否连续的值
var checkObj = []; //保存被选中的状态 $checkBox.each(function () {
var $this = $(this), $thisIndex = $this.data("index");
if ($this.prop("checked")) {
checkObj[$thisIndex] = true;
tempArr.push($thisIndex);
} else {
checkObj[$thisIndex] = false;
}
}); for (var i = 0, len = checkObj.length; i < len; i++) {
if (checkObj[i]) {
saveArr.push(i);
if (checkObj[i + 1]) {
continue;
} else {
break;
}
}
} if (saveArr.length <= num) {
if (saveArr.sort().toString() != tempArr.sort().toString()) {
alert("因为不是连续的选中项, 所以不能选中或者取消!");
return false;
}
} else {
alert("大于" + num + "个不能继续连续选中了!");
return false;
}
});
} checkBox(4);
});
</script>
</body>
</html>