验证所需的两个字段中的一个
本文关键字:一个 字段 两个 验证 | 更新日期: 2023-09-27 18:08:24
我有两个字段:
FirstName
LastName
其中只有一个是必需的。但是如果省略了这两个字段,我希望突出显示这两个字段。如果其中一个被填写,那么模型是正确的,表单应该提交。
如何做到这一点?
所有复杂的验证都是从继承IValidatableObject的视图模型开始的。然后重写Validate并放入您自己的验证规则。
IEnumerable<ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
{
if (String.IsNullOrWhiteSpace(FirstName) && String.IsNullOrWhiteSpace(LastName))
{
yield return new ValidationResult("A name must be entered.", new string[] { "FirstName", "LastName" });
}
}
注意,这只确保服务器端对此规则进行验证。如果您想要它在客户端,您需要编写自己的JavaScript/jQuery代码来处理验证。
你可以使用这个库,它将帮助你做这样的事情
[RequiredIf("PropertyValidationDependsOn", true)]
public string PropertyToValidate { get; set; }
如果您愿意在客户端这样做这可能会给你一个开始
HTML<input type="text" class="name" id="firstName" />
<input type="text" class="name" id="lastName" />
<input type="button" id="btnSubmit" value="submit" />
按钮点击事件
$("#btnSubmit").click(function () {
var isValid = false;
$("input[class='name']").each(function (key, keyValue) {
//alert(keyValue.value);
if (keyValue.value.length > 0) {
isValid = true;
$(this).css("background", "White");
}
else {
$(this).css("background", "RED");
}
})
if (!isValid) {
// do something
}
});
阻止未通过验证的表单提交
$('input[type=submit]').bind('click', function(e) {
var isValid = false;
$("input[class='name']").each(function (key, keyValue) {
//alert(keyValue.value);
if (keyValue.value.length > 0) {
isValid = true;
$(this).css("background", "White");
}
else {
$(this).css("background", "RED");
}
})
if (!isValid) {
e.preventDefault() // prevents the form from being submitted
}
});
在http://jsfiddle.net/habo/UpmCv/测试