jquery - 仅当字段可见时才需要验证

标签 jquery asp.net-mvc-3 jquery-validate requiredfieldvalidator client-side-validation

我在 ASP.NET MVC 3 中使用 [Required] 属性进行客户端验证。

该类如下所示:

public class User
{
    [Required(ErrorMessage = "First Name is required")]
    public string FirstName { get; set; }
}

我希望字段 FirstName 仅在可见时才进行验证,该字段仅在某些条件下才会显示。我怎样才能做到这一点?

我已经使用了以下内容,但它仍然看起来可以验证该隐藏字段的必填字段。

$('#registerForm').validate({ ignore: ":not(:visible)" });

最佳答案

通过@Josiah 的一些有用提示,我能够满足我的要求。

添加RequiredIfAttribute类和所需的javascript。请参阅Conditional Validation in ASP.NET MVC 3

并在类中添加 RequiredIf 属性:

public class User
{
[RequiredIf("hFirstName", "true", ErrorMessage = "First Name is required")]
public string FirstName { get; set; }

在 aspx 中:

@Html.TextBoxFor(model => Model.FirstName, new { @style = "height:auto;" })
@Html.ValidationMessageFor(model => Model.FirstName)
@Html.Hidden("hFirstName")

如果 FirstName 字段隐藏,则将 hFirstName 的值设置为“true”,如果可见,则将值设置为“false”。

这些变化带来了神奇的效果。感谢@Josiah Ruddell 的answer

关于jquery - 仅当字段可见时才需要验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5731788/

相关文章:

jQuery UI 添加占位符到组合框

c# - 在布局执行和后期主体渲染之前,ASP.NET MVC 中是否有 Hook ?

asp.net-mvc-3 - 用于手机和电话号码的 ASP.NET MVC 3 数据注释(已编辑)

javascript - 远程 jQuery 验证在验证时不会触发

Jquery 自动完成最小长度

javascript - 即使向上滚动 1 像素,导航栏也会变得粘滞 - 我希望它仅在滚动超过 10 像素时才出现

javascript - 过滤集合不起作用

visual-studio-2010 - Visual Studio 2010 忽略指定的端口号

jquery - 仅验证任何特定提交按钮的几个字段

JQuery.Validate 添加带有消息的动态规则