MVC4 Jquery验证复选框至少选中一个
MVC4 Jquery validate checkbox to check at least one?
我正在实现一个让用户选择的复选框问题。但是,如果管理员将问题强制设置为true,则复选框必须选择至少1才能提交,否则将提示用户选择。试过jquery,但是当点击按钮时,什么也没发生。
我有什么错误吗?我的观点:
@model List<IFXSurveyTool.Models.AnswerQuestionViewModel>
<script>
var messageContainer = $('.errormessage');
$('#save').click(function () {
// Get all mandatory containers
var mandatory = $('.mandatory');
$.each(mandatory, function () {
var numChecked = $(this).find('input:checked').length;
if (numChecked === 0) {
messageContainer.text('At least one checkbox must be selected.');
return false;
}
});
});
$('.mandatory').on('click', 'input[type="checkbox"]', function () {
messageContainer.text('');
});
</script>
<br />
<h2>Questions</h2>
<br />
@using (Html.BeginForm())
{
<div class="errormessage"></div>
<div class="checkboxcontainer mandatory">
@for (int x = 0; x < Model[i].Choice_SubQuestion.Count(); x++)
{
<input type="checkbox" name="[@i].MultiAnswer[@x]" value="@Model[i].Choice_SubQuestion[x]" />
@Html.HiddenFor(m => m[i].MultiAnswer[x])
@Html.LabelFor(m => m[i].MultiAnswer[x], Model[i].Choice_SubQuestion[x].ToString(), new { @class = "questionlist1" })
}
</div>
<button type="button" id="save">Save</button>
}
在HTML中生成复选框后:
<div class="checkboxcontainer mandatory">
<input type="checkbox" name="[0].MultiAnswer[0]" value="1">
<input name="[0].MultiAnswer[0]" type="hidden" value="">
<label class="questionlist1" for="">1</label>
<input type="checkbox" name="[0].MultiAnswer[1]" value="2">
<input name="[0].MultiAnswer[1]" type="hidden" value="">
<label class="questionlist1" for="">2</label>
<input type="checkbox" name="[0].MultiAnswer[2]" value="3">
<input name="[0].MultiAnswer[2]" type="hidden" value="">
<label class="questionlist1" for="">3</label>
</div>
首先,你给所有包含<div>
的元素class="mandatory"
,如果Model[i].Mandatory
是true
,只生成复选框,所以你的html应该是
for (int x = 0; x < Model[i].Choice_SubQuestion.Count; x++)
{
@{var attributes = Model[i].Mandatory ? "checkboxgroup mandatory" : "checkboxgroup";}
<div class="@attributes">
<div class="message></div>
<input type="checkbox" name="[@i].MultiAnswer[@x]" value="@Model[i].Choice_SubQuestion[x]" />
@Html.HiddenFor(m => m[i].MultiAnswer[x])
@Html.LabelFor(m => m[i].MultiAnswer[x], Model[i].Choice_SubQuestion[x].ToString(), new { @class = "questionlist1" })
</div>
}
<input value="Submit" type="submit" class="btn" id="save" />
接下来,您的按钮是一个提交按钮,因此表单实际上正在提交(在错误消息有机会变得可见之前)。将脚本更改为
$('#save').click(function() {
var canSubmit = true;
// Get all mandatory containers
var mandatory = $('.mandatory');
$.each(mandatory, function() {
var numChecked = $(this).find('input:checked').length;
if (numChecked === 0) {
canSubmit = false; // signal we can't submit
// display error message;
$(this).children('.message').text('At least one checkbox must be selected');
return false; // exit the loop
}
});
if (!canSubmit) {
return false; // cancel the default submit
}
});
$('.mandatory').on('click', 'input[type="checkbox"]', function() {
$(this).closest('.mandatory').children('.message').text(''); // clear any existing error message
});
还要注意,脚本必须在页面的底部(紧接结束的</body>
标记之前)或包装在$(document).ready() { ..... }
或$(function() { ..... });
(简写版本)。
相关文章:
- 制作一个regex来验证只有一个数字的字符串
- 如何创建一个方法来验证数组的范围
- 聚合物铁形式验证至少选中一个复选框
- 如何通过Primefaces3.5使用JSF2.0验证并在成功的情况下打开一个新的选项卡
- 一个jquery验证器方法,它不接受纯数字或纯特殊字符,但接受上面是否有字母
- 页面上的2个表单带有JS验证-其中一个抛出电子邮件验证错误
- 如何使用至少一个数字、一个大写字母和6-20个字符验证密码
- 如何创建只允许用户在选中前一个复选框的情况下选择复选框的复选框验证
- 为什么regex只验证字段中的一个字符,而不是所有输入的字符
- 包括来自另一个页面的Boostrap模态;t验证表单
- 使用javascript验证只有一个特殊字符的字符串
- 正在验证并链接到另一个页面
- 将另一个验证函数附加到 Javascript 表单验证逻辑
- Page_ClientValidate返回 false,但没有一个验证器有错误
- 想要一个验证法国车辆号码格式的功能
- 如何获得下一个验证日?添加天数无效
- 添加& # 39;onblur # 39;到一个验证表单
- 只对一个验证器进行验证
- 如何使用javascript或jquery向html按钮添加另一个验证函数
- 如何使用窗口.Onload函数分配一个验证回调函数