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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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年的日期(根据规范,结束年份是今天的一年加一个)。

你还说“但是,如果我删除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来表示没有实际定义结束日期的时间段的“结束日期”,那么这将不是一个问题。由年份范围产生的日期选择器中的年份下拉列表很难使用,并且由于其中的数据量,可能会导致某些浏览器出现一些延迟。

以上是关于jQuery DatePicker:当日期字段为12-31-9999时,currentDate不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如果超出范围,防止 jQuery UI datepicker 更改文本字段的值

jQuery UI Datepicker 将备用字段填充并格式化为 MySQL 日期

JQuery datepicker 默认日期和多个 datepicker

jQuery:如何从与 datepicker 插入日期的输入字段不同的元素中激活 datepicker?

Jquery DatePicker 设置默认日期

JQuery Datepicker 删除已填写的日期字段