JQuery循环没有选中已选中的复选框

时间:2015-07-31 08:13:36

标签: jquery html

我有一个循环,它应该绕过我的四个复选框,对于每个检查错误的复选框,它应该在计数上添加一个。但是,它不起作用。它似乎只绕一个复选框循环。任何人都可以帮我找出原因吗?

JQuery的:

 $("#CreateUserButton").on('click', function () {
            var rt = false;
            var count = 0;
            $(".RoleCheck").each(function () {
                if ($(".RoleCheck").prop('checked') == false) {
                        count = count + 1;
                        alert("Added one");
                }
            });
            if (count == 4) {
                alert("All four been detected");
                $("#ModalErrorText").html("Error : A Role has not been selected.");
                rt = false;
            }
            $("#ErrorBox").prop('hidden', rt);
            return rt;
        });

HTML:

<div class="col-md-10" id="createButton">
                @foreach (var item in (SelectList)ViewBag.RoleId) {
                    <input type="checkbox" name="SelectedRoles" value="@item.Value" class="checkbox-inline RoleCheck" />
                    @Html.Label(item.Value, new { @class = "control-label" })
                }
            </div>

我知道它与HTML中的foreach循环有关,可以创建选择框。

2 个答案:

答案 0 :(得分:4)

this上下文中执行循环,回调在当前DOM元素的上下文中触发,因此关键字this引用该元素。

$(".RoleCheck").prop('checked')将始终返回第一个复选框的checked状态。

$(".RoleCheck").each(function () {
    //this.checked can also be used
    if ($(this).prop('checked') == false) {
            count = count + 1;
            alert("Added one");
    }
});

但是,可以使用length属性简化循环。

var count = $(".RoleCheck:not(:checked)").length;

答案 1 :(得分:0)

var count=$(".RoleCheck").not(":checked").length

:选中的选择器可以找到所有选中的复选框,
not()函数可以除了元素arrary中的一些元素