2014-04-30 32 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或提供一些反馈。否则,这个线程看起来被放弃了,对其他读者来说没用。谢谢! –