8

我在使用我的 jQuery datepicker 时遇到了这个错误。

jQuery:

$( ".datepicker" ).datepicker({ 
    defaultDate: +7,
    autoSize: true,
    dateFormat: 'dd.mm.yy',
}); 

模型:

[DisplayName("Date")]
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
[Required(ErrorMessage = "Date is required")]
public DateTime Date { get; set; }

所以我希望日期格式类似于dd.MM.yyyy,并且当我使用日期选择器选择日期时,它会正确添加到字段中。但也在同一秒钟内,出现验证错误,说The field 'Date' must be a date.

我确实通过手动编写格式的日期进行了测试,dd/MM/yy然后看起来它正在工作。因此,验证器在某处寻找该格式,但我无法找到修改它的位置。

4

3 回答 3

2

你在用铬吗?可能是 jquery.validate.js 问题,请查看此Jquery Datepicker Chrome

于 2013-06-17T14:11:55.933 回答
0

DisplayFormat 不会是验证中接受的格式。如果您想要其中带有句点的内容,我建议您使用正则表达式来验证这一点。

[DisplayName("Date")]
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
[Required(ErrorMessage = "Date is required")]
[RegularExpression(@"PUT REGEX HERE", ErrorMessage = "Invalid Date")] // below is a link
public DateTime Date { get; set; }

这里有一些常用的表达方式。

另外,我建议从 c# 到 js 时格式保持一致。

你在 JS 中有:

dateFormat: 'dd.mm.yy'

你可能想要:

dateFormat: 'dd.mm.yyyy'

您也可以将模型上的 DisplayFormat 属性也更改为 dd.MM.yy。只是一个想法!

于 2013-05-25T00:09:30.030 回答
0

修改https://stackoverflow.com/a/17968454/4955259上提供的答案似乎对我来说适用于日期格式 dd.mm.yy(在 jquery.validate.js 之后添加脚本)。

jQuery.validator.methods.date = function (value, element) {
    var d = value.split(".");
    return this.optional(element) || !/Invalid|NaN/.test(new Date((/chrom(e|ium)/.test(navigator.userAgent.toLowerCase())) ? d[1] + "." + d[0] + "." + d[2] : value));
};
于 2015-12-10T12:58:05.647 回答