使用下一个箭头时,jquery ui 的日期选择器中的月份返回错误值

Posted

技术标签:

【中文标题】使用下一个箭头时,jquery ui 的日期选择器中的月份返回错误值【英文标题】:wrong value returned for month in datepicker of jquery ui when using the next arrow 【发布时间】:2013-09-04 17:04:18 【问题描述】:

I am using datpicker to provide options to select the month/year only and when the month is selected, a form is submitted with the selected value.

代码如下: jquery ui datepicker 使用此代码:

    $(document).ready(function()
        $("#datepicker").datepicker( 
            changeMonth: true,
            changeYear: true,
            showButtonPanel: false,
            yearRange: "2013:2015",
            onChangeMonthYear: function(dateText, inst)  
                console.log($(".ui-datepicker-year :selected",$(this)).val() 
                    + "/" + $(".ui-datepicker-month :selected",$(this)).val());
            
        );
    );

但是返回的数字有两种情况。

(console.log 中的值)

    如果您尝试选择一个月份,比如说 2013 年 10 月,返回值为 2013/9,这没关系。 现在,如果您尝试单击箭头转到 2013 年 11 月,则该值再次为 2013/9,这是错误的。同样从 2013 年 12 月到 2012 年 1 月返回 2013/11

    如果你走到结尾“dec 2015”,然后点击下一个箭头,它会回到开头的“jan 2013”​​,这没关系,但是继续点击下一个箭头,你会请注意,您不能再从“2013 年 12 月”移动到“2014 年 1 月”,它会移回“2013 年 1 月”

感谢任何帮助。

【问题讨论】:

【参考方案1】:

onChangeMonthYear() 接收新选择的年份和月份作为参数,因此您可以直接使用它们

            ...
            minDate: new Date(2013, 1 - 1, 1),
            maxDate: new Date(2015, 12 - 1, 31),
            onChangeMonthYear: function(year, month, inst)  
                console.log(
                    year + "/" + month
                );
            

【讨论】:

现在,month 返回实际月份编号而不是 javascript 月份编号,因此 sep 为 9,这没关系,我可以适应,但如果您继续下一个到末尾,它会产生额外的问题" dec 2015”返回“2015/12”,当你点击下一个时,“jan 2013”​​返回“2016/1”,此外“dec 2013”​​跳转到“jan 2013”​​并返回“2017/1”并继续。 minDatemaxDate 将阻止选择超出您的范围——我编辑了我的答案 太棒了,这解决了我的问题,尽管我希望它也能按预期使用原始代码。

以上是关于使用下一个箭头时,jquery ui 的日期选择器中的月份返回错误值的主要内容,如果未能解决你的问题,请参考以下文章

从文本链接触发的 JQuery UI 日期选择器

jQuery UI 日期选择器的问题

jQuery UI Datepicker - 隐藏特定月份的上一个导航箭头

jQuery UI 日期选择器今日链接

在日期选择器上设置日期 jquery ui datepicker

JQuery-UI 日期选择器不起作用