2014-04-30 33 views
3

我是jQuery中的新成員。我正在使用jQuery版本1.8.3。在我的ASP.NET Web應用程序中,我使用jQuery驗證引擎來驗證日期。我動態創建HTML文本輸入,允許用戶只輸入日/月/年的格式,在這裏我將過去和未來的驗證器都分配給texbox。我想用dd/mm/yyyy格式驗證日期,方法是使用過去和將來的驗證器,用戶應該允許輸入過去和將來給定值之間的日期。如果用戶輸入的日期超出了限制,它應該以dd/mm/yyyy格式顯示日期。jQuery驗證引擎,以dd/mm/yyyy格式驗證過去和未來日期

但是發生了什麼;過去和將來的日期驗證器只有在我以yyyy-mm-dd格式傳遞日期時纔會生效,而且我必須以yyyy-mm-dd格式在文本框中輸入日期。

每個人的意見,歡迎

我試了一下到現在爲止如下:

HtmlGenericControl l_oHGC = new HtmlGenericControl("div"); 
divCustomFields.Controls.Add(l_oHGC); 
TextBox l_oTXT = new TextBox(); 
l_oHGC.Controls.Add(l_oTXT); 
l_oTXT.Text = Convert.ToDateTime("Apr 16 2014 12:00AM").ToString(gc.APP_DATEFORMAT_DD_MM_YYYY); 
l_oTXT.MaxLength = 10; 
l_oTXT.CssClass = "calender validate[custom[date],past[" + Convert.ToDateTime("Dec 31 2050 12:00AM").ToString(gc.APP_DATEFORMAT_DD_MM_YYYY) + "],future[" + Convert.ToDateTime("Apr 26 2014 12:00AM").ToString(gc.APP_DATEFORMAT_DD_MM_YYYY) + "]]"; 

在jquery.validationEngine-en.js我以下更改

"past": { 
    "regex": /^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/, 
       "alertText": "* Date prior to " 
     }, 
    "future": { 
    "regex": /^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/, 
       "alertText": "* Date past " 
     }, 
    "date": { 
     "regex": /^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/, 
       "alertText": "* Invalid date, must be in DD/MM/YYYY format" 
     }, 

回答

1

短答案是:你不能這樣做pastfuture驗證w母雞日期是以自定義格式指定的。開箱即用,僅支持ISO格式的日期(YYYY-MM-DD或YYYY/MM/DD)。

壞消息是語言文件(jquery.validationEngine-en.js)中的更改不會影響這些驗證的解析日期。

的原因是ISO格式在jquery.validationEngine.js以下方法硬編碼:

/** 
* Parses an ISO date 
* @param {String} d 
*/ 
_parseDate: function(d) { 

    var dateParts = d.split("-"); 
    if(dateParts==d) 
     dateParts = d.split("/"); 
    if(dateParts==d) { 
     dateParts = d.split("."); 
     return new Date(dateParts[2], (dateParts[1] - 1), dateParts[0]); 
    } 
    return new Date(dateParts[0], (dateParts[1] - 1) ,dateParts[2]); 
}, 

因此,你必須要麼使用YYYY/MM/DD格式,而不是期望的dd/mm/yyyy或編寫自己的分析方法,而不是_parseDate適合您的需求。

如果你更喜歡第二種方式,這裏是壞消息2:沒有擴展點可用於通過自己的JS來覆蓋此行爲。因此,您需要直接編輯0​​,並確保將來您將更新jQuery.validationEngine插件時不會覆蓋您的更改。

+0

@Rahul:我的回答有幫助嗎?如果願意,可以隨時接受/ upvote或提供一些反饋。否則,這個線程看起來被放棄了,對其他讀者來說沒用。謝謝! –