2014-01-07 97 views
2

我有关于如何限制我的默认选中复选框的问题。例如我有7个复选框,例如 。一旦页面加载,我想用3个默认选中的复选框限制它。限制默认选中复选框

this should be the output: 

Checkbox1 : true 
Checkbox2 : true 
Checkbox3 : true 
Checkbox4 : false 
Checkbox5 : false 
Checkbox6 : false 
Checkbox7 : false 

这里是我的示例代码:

var mvp = 3; 
$(document).ready(function() { 
$("input:checkbox").each(function(index) { 
    ($this).attr("checked",true); 
}); 

}); 

我的股票有了这个,我不知道在哪里,我要把我的计数器(MVP)我的每个函数中。在这段代码中,我所有的复选框都被选中:D。

对不起,一个新手的问​​题,请帮助我..

+1

'($此)'或'$(这一点)'? – undefined

+0

:D错过了类型:D – user2593560

回答

2

有实际没有必要,因为each功能的计数器将通过在索引中。只需使用索引作为计数器。

$(document).ready(function() { 
    $("input:checkbox").each(function(index) { 
      this.checked = (index < 3); 
    }); 
}); 

JS小提琴:http://jsfiddle.net/SB6aD/2/

+0

逻辑上可以接受..我修改了这段代码。它的工作原理:D谢谢@Kevin – user2593560

+0

@ user2593560很高兴​​我能帮忙! –

+0

但实际上,如果你有一个'' – Reigel

0

不要安装使用JavaScript网页的默认状态,使用HTML “选中” 属性。

<form action="demo_form.asp"> 
    <input type="checkbox" name="vehicle" value="Bike"> I have a bike<br> 
    <input type="checkbox" name="vehicle" value="Car" checked> I have a car<br> 
    <input type="submit" value="Submit"> 
</form> 

在这个例子中,汽车复选框将被选中。

0

demo

$(document).ready(function() { 
    var checkboxes = $("input:checkbox"); 
    checkboxes.each(function(index) { 
     if (checkboxes.filter(':checked').length >= 3) {return;} 
     this.checked = true; 

    }); 

}); 
+0

这个循环很糟糕。您将针对循环中的每个步骤运行查询。只需收集正确的元素并用计数器对它们进行迭代。 – Jazzepi

+1

@Jazzepi是啊是啊...所以我已经更新并添加了一个演示... – Reigel

0

递减mvp您检查后每个复选框。当它达到0时,开始取消选中。

$(document).ready(function() { 
    var mvp = 3; 
    $("input:checkbox").each(function(index) { 
     ($this).attr("checked", mvp > 0); 
     mvp--; 
    }); 
}); 
0

检查.slice

$(function() { 
    var mvp = 3; 
    $('input:checkbox').slice(0, mvp).prop('checked', true); 
    $('input:checkbox').slice(mvp).prop('checked', false); 
}); 

See the JS Fiddle

和注释,checked是不是一个属性的属性,使用.prop代替.attr

1

使用jquery :lt选择器,它将匹配所有具有较小索引的元素。

实施例:

$(function() { 
    var mvp = 3; 
    $('input:checkbox:lt('+mvp+')').prop('checked', true); 
}); 
1

基于的@Kevin鲍尔索克斯的代码:

var mvp = 3; 
$(document).ready(function() { 
    var counter = 0; 
    $("input:checkbox").each(function(index) { 
     if(counter < mvp){ 
      $(this).attr("checked",true); 
      counter++; 
     } 
    }); 
}); 

我修改这个代码插入到此:

var mvp = 3; 
    $(document).ready(function() { 
$("input:checkbox").each(function(index) { 
     if(index < mvp){ 
      $(this).attr("checked",true); 
     } 
    }); 
}); 
+0

我们有同样的想法,使用'索引' –