我在使用我的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
类似,当我使用datepicker选择日期时,它会正确添加到字段中。但同样在第二天,出现验证错误The field 'Date' must be a date
。
我通过手动编写dd/MM/yy
格式的日期进行测试,然后看起来它正在运行。所以某个地方验证器会查找该格式,但我无法找到修改它的位置。
答案 0 :(得分:2)
你在使用铬吗?可以是jquery.validate.js问题,请查看此Jquery Datepicker Chrome
答案 1 :(得分: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。只是一个想法!
答案 2 :(得分: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));
};