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

问题描述 投票:1回答:1

当当前字段值为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
    });
jquery asp.net asp.net-mvc datepicker
1个回答
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来表示没有实际定义结束日期的时间段的“结束日期”,那么这将不是一个问题。由年份范围产生的日期选择器中的年份下拉列表很难使用,并且由于其中的数据量,可能会导致某些浏览器出现一些延迟。

© www.soinside.com 2019 - 2024. All rights reserved.