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文章十幾次或更多,並且沒有點擊。 –