形成多个复选框,其中包含可以选择的数量的限制

时间:2015-05-08 20:55:12

标签: javascript php html forms

我遇到了一个问题,我需要让用户选择最多2个复选框,然后它会让你选择另一个,直到你取消选择一个我在这里工作{ {3}}

但是当选择表单时,我无法获取已勾选的值,因为复选框的名称相同,否则javascript将无效。因此,当我在名称上添加方括号以使其成为选项[]时,会打破您可以选择的复选框的最大限制,即您可以选择所有4.您可以在此示例中看到。 https://jsfiddle.net/Ly1h825h/

任何人都可以看到解决这个问题的方法或者做错了吗?

<form name="addtobasket50" id="addtobasket50" method="post" enctype="multipart/form-data" action="cart.php">
<label for="12345" id="select12345" class="inpSelect"><input type="checkbox" name="option[]" value="12345" id="12345" class="bundleChk" /> Select</label>
<label for="12346" id="select12346" class="inpSelect"><input type="checkbox" name="option[]" value="12346" id="12346" class="bundleChk" /> Select</label>
<label for="12347" id="select12347" class="inpSelect"><input type="checkbox" name="option[]" value="12347" id="12347" class="bundleChk" /> Select</label>
<label for="12348" id="select12348" class="inpSelect"><input type="checkbox" name="option[]" value="12348" id="12348" class="bundleChk" /> Select</label>
</form>
<script type="text/javascript">
function checkboxlimit(checkgroup, limit, bundleID){
    var checkgroup=checkgroup
    var limit=limit
    for (var i=0; i<checkgroup.length; i++){
        checkgroup[i].onclick=function(){
        var checkedcount=0
        for (var i=0; i<checkgroup.length; i++)
            checkedcount+=(checkgroup[i].checked)? 1 : 0
        if (checkedcount==limit) {
            document.getElementById('cart'+bundleID).disabled = false;
        }
        if (checkedcount>limit){
            //var prodID = this.checked.value;
            //alert(document.getElementsByName("option").checked);

            this.checked=false
            }
        }
    }
}
<script>
<script type="text/javascript">
checkboxlimit(document.forms.addtobasket50.option[], 2,50)
<script>

提前致谢 舒卡

1 个答案:

答案 0 :(得分:2)

使用点表示法访问属性时,属性名称必须是有效标识符,但[]不是有效标识符的一部分(括号用于索引数组和对象)。要引用名称不是标识符的属性,必须使用数组表示法,并将属性名称作为文字字符串,因此它应该是:

checkboxlimit(document.forms.addtobasket50["option[]"], 2,50);