我试图利用某种形式验证来做一些它真正没有设计的事情。我的表格中有一个表格,每行都有一个复选框。我想确保至少选择一种特定类型的复选框,如果不是,我想显示验证错误。我正在做类似的文本框,其逻辑看起来像这样:
function ValidateName() {
var $nameTextbox = $("#Name");
var $originalName = $("#OriginalName");
var nameText = $nameTextbox.val().toLowerCase();
var originalNameText = $originalName.val().toLowerCase();
//check to see if original name and group name match
if (nameText != originalNameText) {
//This isn't the same name we started with
if (uniqueNames.indexOf(nameText) > -1) {
//name isn't unique, throw validation error
var currentForm = $nameTextbox.closest("form");
//trigger validation
var errorArray = {};
errorArray["Name"] = 'Name must be unique';
currentForm.validate().showErrors(errorArray);
}
}
}
我已经为表编写了类似的内容,只要我将errorArray的索引指向输入的id就行了。但是,我希望在表格顶部的验证摘要中显示更通用的错误。如何设置要在表单或验证摘要而不是特定输入上显示的错误数组?这甚至可能吗?
答案 0 :(得分:0)
你可以做到这一点的一种方法是设置一个隐藏的输入,当没有检查时它是假的,如果检查了一个或多个则为true。然后,您可以通过为所有复选框提供所有类来收听它们。我有一个例子如下所示
<强> HTML 强>
<input type="hidden" id="IsCheckValue" name="IsCheckedValue" value="false"/>
<input type="checkbox" class="someCheckbox"/>
<input type="checkbox" class="someCheckbox"/>
<input type="checkbox" class="someCheckbox"/>
<强> Jquery的强>
$(document).ready(function(){
$(".someCheckbox").change(function(){
if($(".someCheckbox:checked ").length > 0){
$("#IsCheckValue").val("True")
}else{
$("#IsCheckValue").val("False")
}
})
})
然后在模型中传递bool值。在您的控制器方法中,您可以检查bool的值。如果bool为false,则将模型设置为false,如此
ModelState.AddModelError("Checkbox", "Must select one checkbox");
您可以使用@Html.ValidationSummary()
在视图中显示错误。