VS2012 MVC4中jquery validate的日期验证bug
2012-11-21 14:20 Bce 阅读(1044) 评论(1) 编辑 收藏 举报好吧,刚发现这个问题
Model中
[Display(Name = "成立时间"), DisplayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:yyyy-MM-dd}"), DataType(DataType.Date)] public DateTime EnterpriseEstablishDate { get; set; }
结果你会发现这样
validate 你是肿么了?
一看js就发现问题了
关于时间验证,jquery用的是这个
// http://docs.jquery.com/Plugins/Validation/Methods/date date: function(value, element) { return this.optional(element) || !/Invalid|NaN/.test(new Date(value)); },
断点一调试就发现问题了,new Date('2012-3-3')竟然是NaN,我了个去.........
所以没办法,要么给date验证改成dateISO一样的模式
// http://docs.jquery.com/Plugins/Validation/Methods/date date: function(value, element) { return this.optional(element) || /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(value);
}, // http://docs.jquery.com/Plugins/Validation/Methods/dateISO dateISO: function(value, element) { return this.optional(element) || /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(value); },
要么利用js加载顺序,盖掉date验证方法
// 存成一个js档,放在jquery.validate.js 之后加载 jQuery.validator.methods.date = function (value, element) { return this.optional(element) || (/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value)); }
完
鞠躬撒花