我有一个循环,它应该绕过我的四个复选框,对于每个检查错误的复选框,它应该在计数上添加一个。但是,它不起作用。它似乎只绕一个复选框循环。任何人都可以帮我找出原因吗?
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循环有关,可以创建选择框。
答案 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中的一些元素