问题描述
我正在尝试确保此列表中至少有一个“输入”复选框被选中,大约有 10 个项目,但我不确定如何执行此操作?我需要在模型中添加标志吗?
<div>* Data</div>
@Html.ValidationMessageFor(x => x.flgData,"",new { @class = "text-danger" })
<ul>
@foreach (var item in Model.listofData)
{
<li>
<input type="checkBox" value="@item.Value" name="chk" />
<label asp-for="@item.Selected">@Html.Raw(@item.Name)</label>
<input type="hidden" asp-for="@item.DictionaryId" />
<input type="hidden" asp-for="@item.Name" />
</li>
}
</ul>
解决方法
您可以遍历所有复选框并检查它是否被选中
HTML
<input type="button" id="btnSubmitCB" value="Submit" class="btn btn-primary" />
<input type="checkbox" class="chkbox" value="Bike" /> Bike
<input type="checkbox" class="chkbox" value="Car" /> Car
<input type="checkbox" class="chkbox" value="Boat" /> Boat
JQuery
$(document).ready(function () {
$('#btnSubmitCB').click(function () {
var cbChecked = false;
$('input[type=checkbox]').each(function () {
if (this.checked) {
cbChecked = true;
return false;
}
});
if (cbChecked) {
alert("At least one checkbox is checked");
}
else {
alert("No checkbox is checked");
}
});
});
另一种不使用 .each 函数的方法
$(document).ready(function () {
$('#btnSubmitCB').bind("click",function () {
let checkedCount = $('input[type=checkbox]:checked').length;
if (checkedCount == 0) {
alert("no checkbox has been checked")
}
else {
alert("checkbox has been checked");
}
});
});