js 限定复选框最多只能勾选2个,至少勾选1个

要求:如果超过个数,自动取消第一个勾选的,勾中下一个勾中的。<scripttype="text/javascript">varopts=newArray();opts.p... 要求:如果超过个数,自动取消第一个勾选的,勾中下一个勾中的。
<script type="text/javascript">
var opts = new Array();
opts.push(0);
opts.push(1);
function check_count(_obj) {
if ($(":checkbox[name='chRates']:checked").length >= 2) {
opts.push($(":checkbox[name='chRates']").index($(_obj)));
}
if (opts.length > 2) {
$($(":checkbox[name='chRates']").get(opts.shift())).attr("checked", false);
}
}
</script>
<div>
<input value="1" type="checkbox" id="chRates_1" name="chRates" onclick="check_count(this)" checked="checked" /><label>1</label>
<input value="2" type="checkbox" id="chRates_2" name="chRates" onclick="check_count(this)" checked="checked" /><label>2</label>
<input value="3" type="checkbox" id="chRates_3" name="chRates" onclick="check_count(this)" /><label>3</label>
<input value="4" type="checkbox" id="chRates_4" name="chRates" onclick="check_count(this)" /><label>4</label>
<input value="5" type="checkbox" id="chRates_5" name="chRates" onclick="check_count(this)" /><label>5</label>
<input value="6" type="checkbox" id="chRates_6" name="chRates" onclick="check_count(this)" /><label>6</label>
<input value="7" type="checkbox" id="chRates_7" name="chRates" onclick="check_count(this)" /><label>7</label>
<input value="8" type="checkbox" id="chRates_8" name="chRates" onclick="check_count(this)" /><label>8</label>
</div>
如果可以帮我解决这个问题,悬赏可提高至100以上
展开
 我来答
cmoooo
推荐于2016-10-30 · TA获得超过3587个赞
知道小有建树答主
回答量:741
采纳率:0%
帮助的人:680万
展开全部
百度hi"TROREN"

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>demo</title>
</head>
<body>
<script type="text/javascript">
var p_tag,inputs,selectInputs=[];
onload = function(){
p_tag = document.getElementById("inputsParent");
inputs = p_tag.getElementsByTagName("input");
for(var i=0; i<inputs.length; i++){
if(inputs[i].checked == true) selectInputs.push(inputs[i]);
}
document.title = selectInputs.length;
}
function check_count(th){
var i=n=0;
if(th.checked == true)
{
selectInputs.push(th);
if(selectInputs.length > 2){
selectInputs[0].checked = false;
selectInputs.shift();
}
}else{
if(selectInputs.length>1){
for(var i=0; i<selectInputs.length; i++){
if(th == selectInputs[i]) selectInputs.splice(i,1);
}
}else{
th.checked = true;
return false;
}
}
}
</script>
<div id="inputsParent">
<input value="1" type="checkbox" name="chRates" onclick="check_count(this)" checked="checked" /><label>1</label>
<input value="2" type="checkbox" name="chRates" onclick="check_count(this)" checked="checked" /><label>2</label>
<input value="3" type="checkbox" name="chRates" onclick="check_count(this)" /><label>3</label>
<input value="4" type="checkbox" name="chRates" onclick="check_count(this)" /><label>4</label>
<input value="5" type="checkbox" name="chRates" onclick="check_count(this)" /><label>5</label>
<input value="6" type="checkbox" name="chRates" onclick="check_count(this)" /><label>6</label>
<input value="7" type="checkbox" name="chRates" onclick="check_count(this)" /><label>7</label>
<input value="8" type="checkbox" name="chRates" onclick="check_count(this)" /><label>8</label>
</div>
<div id="aa"></div>
</body>
</html>
fewind1990
2013-01-04 · TA获得超过347个赞
知道小有建树答主
回答量:478
采纳率:0%
帮助的人:238万
展开全部
var opts = new Array();

function addOpts(opt){
if(opts.length<2){

opts.push(opt);

return;

}
opts[0] = opts[1];

opts[1] = opt;

}
function checkedOpts(){
$(":checkbox[name='chRates']").attr("checked", false);//全部取消选中

for(var i=0;i<opts.length;i++){

$(opts[i]).attr("checked", true);//选中,忘了选中怎么弄了..

}
}
$(function(){
$(":checkbox[name='chRates']").bind("click",function(){
addOpts(this);

checkedOpts();

})

});
至于至少选中一个,在提交表单的时候检查下就行了。
没得调试,手打痛苦...应该有很多错,大致就是这个思路:把数组弄成一个长度为2的队列,
只选中队列中的checkbox,第三个选中的时候把第一个排除掉队列。
追问
呵呵,非常感谢您的回答。其实我这里有好几个方法的,只是都有一点点bug需要调整,您给出的这种方案不完整哦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tony80282235
2013-01-04 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:167
采纳率:100%
帮助的人:78万
展开全部
<div>
<input value="1" type="checkbox" id="chRates_1" name="chRates" checked="checked" />
<label>
1
</label>
<input value="2" type="checkbox" id="chRates_2" name="chRates" checked="checked" />
<label>
2
</label>
<input value="3" type="checkbox" id="chRates_3" name="chRates" />
<label>
3
</label>
<input value="4" type="checkbox" id="chRates_4" name="chRates" />
<label>
4
</label>
<input value="5" type="checkbox" id="chRates_5" name="chRates" />
<label>
5
</label>
<input value="6" type="checkbox" id="chRates_6" name="chRates" />
<label>
6
</label>
<input value="7" type="checkbox" id="chRates_7" name="chRates" />
<label>
7
</label>
<input value="8" type="checkbox" id="chRates_8" name="chRates" />
<label>
8
</label>
</div>

<script language="javascript">
$(document).ready(function(){
$("input:checkbox").click(function(){
var n = $("input:checked").length;
//alert(n);
if(n>2){
if($(this).index() > $("input:checked").first().index()){
$("input:checked").first().attr("checked", false);
}else{
$("input:checked:eq(1)").attr("checked", false);
}
}
});
});
</script>

试下
更多追问追答
追问
不行哦。
追答
不行 ?  你把我的代码拷贝过去试了吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
且把浮云遮旧日
2013-01-04 · 超过12用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:37.1万
展开全部
var checkArr = new Array();
checkArr.push("chRates_1");
checkArr.push("chRates_2");
function check_count(obj){
alert(obj.checked);
if(obj.checked){
if(checkArr.length>=2){
var firstObj = document.getElementById(checkArr.shift());
firstObj.checked=false;
}
checkArr.push(obj.id);
}else{
delArr(checkArr,obj.id);
}
}

function delArr(arrayparam,value){
for(var i=0;i<arrayparam.length;i++){
var oneValue=arrayparam[i];
if(oneValue==value){
arr.splice(i,i);
}
}
}
追问
这位兄弟给出的答案还是有一点bug哦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式