【发布时间】:2016-12-23 00:13:39
【问题描述】:
我正在寻找一种原生 JavaScript 解决方案,通过禁用剩余的复选框(如果用户取消选中其中一个选项,则再次启用它们)来防止用户检查超过 2 个项目
下面是我的复选框:
<div class="checkboxdiv">
<input type="hidden" name="Extras" value="">
<input type="checkbox" name="Extras" value="Wedges"><label>Wedges</label> <br/>
<input type="checkbox" name="Extras" value="Chips"><label>Chips</label> <br/>
<input type="checkbox" name="Extras" value="Garlic Bread"><label>Garlic Bread</label> <br/>
<input type="checkbox" name="Extras" value="Chicken Wings"><label>Chicken Wings</label> <br/>
<input type="checkbox" name="Extras" value="Cheese Sticks"><label>Cheese Sticks</label>
</div>
我知道这已经使用 JQuery 进行了介绍,但我正在寻找一个本地解决方案,以便更好地了解代码的工作原理。
解决方案
这是我在大家的帮助下想出的最终解决方案。
function checkboxlimit(checkgroup, limit){
var checkgroup=checkgroup;
var limit=limit;
//Changes onclick funtion for each checkbox
for (var i=0; i<checkgroup.length; i++){
checkgroup[i].onclick= function(){
var checkedcount=0;
//Loops through checkboxes
for (var i=0; i<checkgroup.length; i++){
//adds 1 if checked, 0 if not
checkedcount+=(checkgroup[i].checked)? 1 : 0;
}
//Loops through checkboxes
for (var i=0; i<checkgroup.length; i++){
//Disables check box if it's unchecked and the limit has been reached
if(!checkgroup[i].checked && checkedcount==limit){
checkgroup[i].disabled=true;
}
//Enables all checkboxes otherwise
else{
checkgroup[i].disabled=false;
}
}
}
}
}
【问题讨论】:
-
你有没有想过解决方案?
-
首先检查这个问题:stackoverflow.com/questions/32438068/… 您的
onchange处理程序将简单地检查所有复选框的状态并禁用所有未选中的复选框,当两个复选框是checked时。 -
afaik,复选框既没有 readonly 也没有 disabled 属性。因此,从技术上讲,您需要手动实现此类行为,例如stackoverflow.com/questions/155291/…
标签: javascript