2

也许这只是我的想法工作的方式,但我很难理解您应该如何执行自定义的不显眼验证程序。 C#部分非常简单,但jqueryui适配器是我迷路的地方。日期的自定义日期验证程序

我一直在尝试做一个验证器,要求日期在过去一段时间。我使用它来进行年龄验证,以确保某人已经输入了过去18年的日期。

我终于决定让它成为一个远程验证器,这种验证使用客户端和服务器端的相同代码。尽管如此,我仍然对jquery感兴趣,使之成为可能。

我希望数据注释扩展具有日期函数。

回答

2

你可以在Brad Wilson's blog article找到很多有关asp.net mvc的不显眼验证的信息,包括创建自定义验证器。

基于以下HTML(应该是文本框的辅助输出)

<input type="text" name="Age" 
     data-val="true" 
     data-val-required="This field is required" 
     data-val-minage="You should be 18 years or older, go get your parents!" 
     data-val-minage-value="18" /> 
    <input type="submit"/> 

您可以添加以下JavaScript得到的东西在客户端验证:

// Extend date with age calculator 
    Date.prototype.age = function (at) { 
     var value = new Date(this.getTime()); 
     var age = at.getFullYear() - value.getFullYear(); 
     value = value.setFullYear(at.getFullYear()); 
     if (at < value) --age; 
     return age; 
    }; 

    // Add adapter for minimum age validator. Wrap in closure 
    (function ($) { 
     $.validator.unobtrusive.adapters.addSingleVal("minage", "value"); 
    } (jQuery)); 

    // Add client side minimum age validator 
    $.validator.methods.minage = function (value, element, params) { 

     // If no value is specified, don't validate 
     if (value.length == 0) { 
      return true; 
     } 

     var dob = new Date(Date.parse(value)); 

     if (dob.age(new Date()) < params || dob == 'Invalid Date') { 
      return false; 
     } 

     return true; 
    }; 

学分年龄计算器是由于Dave

的一两件事这里缺少的是全球化的,但我想这是出了问题的范围。顺便说一句很容易使用jquery Globalize plugin

希望实现这有助于

+0

这是梦幻般的。我认为我正在断开适配器的工作方式以及jqv如何互动..我已经阅读了Brads文章十几次或更多,并且没有点击。 –