jQuery DatePicker:当日期字段为12-31-9999时,currentDate不起作用

当当前字段值为12-31-9999且yearRange为2000:+1时,DatePicker无法正确处理currentDate的计算。 当我点击字段打开DatePicker时,currentDate的结果变为1-1-2000。 因此,似乎DatePicker将日期包装到yearRange的开头。 但是,如果我删除yearRange,则DatePicker默认为-10:+10的范围,这导致年份为9989:10009。

当我点击包含12-31-9999的字段时,我宁愿让DatePicker显示今天的日期。 注意:逃离现场时不应进行任何更改。 这可能吗?

$(".datePicker").datepicker({ changeMonth: true, changeYear: true, dateFormat: "yy-mm-dd", yearRange: 2000:+1 }); 

您看到的问题是因为输入字段中的日期(“9999-12-31”)超出了您指定的范围(“2000:+1”)。 此范围产生2000 – 2019年的日期(根据规范,结束年份是今天的年份加1)。

你还说“但是,如果我删除yearRange,那么DatePicker默认为-10:+10”的范围。 不完全的。 它默认为“c-10:c + 10”,如果你看一下规格,那就不一样了 – “c”意味着它将范围放在10年+/-输入中的年份,而不是到今天的一年。

我认为这种误解导致了你的错误。 如果要显示9999日期,请将年份范围设置为

 yearRange: "2000:c+1" 

这将把最大年份设置为输入年+1,而不是今天的+1年。

有关演示,请参见http://jsfiddle.net/5ornc4gv/7/ 。

http://api.jqueryui.com/datepicker/#option-yearRange包含格式字符串的详细信息。

正如我在评论中所评论的那样,如果您的软件使用NULL来表示没有实际定义结束日期的时间段的“结束日期”,那么这将不是一个问题。 由年份范围产生的日期选择器中的年份下拉列表很难使用,并且由于其中的数据量,可能会导致某些浏览器出现一些延迟。