VS2012 MVC4中jquery validate的日期验证bug

好吧,刚发现这个问题

Model中

[Display(Name = "成立时间"), DisplayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:yyyy-MM-dd}"), DataType(DataType.Date)]

public DateTime EnterpriseEstablishDate { get; set; }

结果你会发现这样

VS2012 MVC4中jquery validate的日期验证bug

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));

}

鞠躬撒花

 

你可能感兴趣的:(jQuery Validate)