未来日期提出错误jquery ui datepicker

我有jquery ui datepicker的脚本

var date = new Date(new Date().setDate(new Date().getDate() - 1)); $('.date').datepicker({ dateFormat: 'dd-mm-yy', defaultDate: date, minDate: Date.parse("1900-01-01"), maxDate: Date.parse("2100-01-01"), }); 

在我看来,我有:

 @Html.TextBoxFor(m => m.EndDate, new { @class = "date" }) 

它适用于昨天和之前的日期,但如果我选择今天或更高的日期,则会引发错误

在此处输入图像描述

怎么了?

编辑

GOT IT这是关于我的格式。 我希望它是dd-mm-yy,但是当我选择例如15-05-2016时,它表示一年中没有15个月。 我怎么解决这个问题?

我自己没试过,但它可以解决这个问题。

改变这样的日期格式

 dateFormat: 'mm-dd-yy', 

或者只是删除该行,因为默认的dateFormat是mm/dd/yy

Date.parse()返回自1970年1月1日以来日期字符串的毫秒数, minDatemaxDate可以接受一个数字,但它以这种方式使用:

数字 :从今天开始的几天。 例如, 2表示从今天开始的两天, -1表示昨天

因此,validation期望您输入的日期介于过去的4102444800000天和将来的4102444800000天之间 。 这些日期非常遥远,而且对于Date来说太大了。

要修复它,请改用new Date()

 $('.date').datepicker({ dateFormat: 'dd-mm-yy', defaultDate: -1, minDate: new Date("1900-01-01"), maxDate: new Date("2100-01-01") }); 

的jsfiddle

因为我得到不显眼的validation需要为不同的格式重载, 这个答案帮助了我。

 $.validator.addMethod('date', function (value, element) { if (this.optional(element)) { return true; } var ok = true; try { $.datepicker.parseDate('dd-mm-yy', value); } catch (err) { ok = false; } return ok; });