【问题标题】:Not getting full range of months in Jquery Date Picker在 Jquery Date Picker 中没有得到完整的月份
【发布时间】:2015-06-22 14:19:21
【问题描述】:

我已经接管了某人对 jQuery 日期选择器调用的修改。我遇到的问题是,当我将今天作为最小日期和从现在起的一年作为最大日期传入时,“年”列显示 2015 和 2016,这是应该的,但“月”列仅显示本月向前到十二月。缺少当前月份之前的所有月份。

我不确定是否应该将我传入的最小日期更改为今年的第一天?或者我可以更改此 JavaScript 以仍然显示所有月份,即使最小日期是今天?

function createDatepicker($field) {
    var minDateStr = $field.attr('data-min-date').split('-');
    var maxDateStr = $field.attr('data-max-date').split('-');
    var minDate = new Date(parseInt(minDateStr[2]), parseInt(minDateStr[0])-1, parseInt(minDateStr[1]));
    var maxDate = new Date(parseInt(maxDateStr[2]), parseInt(maxDateStr[0])-1, parseInt(maxDateStr[1]));
    var div = $field.parent();
    var sy = $('.datepicker-year', div).first();
    var sm = $('.datepicker-month', div).first();
    var sd = $('.datepicker-day', div).first();
    $field.datepicker({
        changeMonth: true,
        changeYear: true,
        yearRange: '-' + minDate.getFullYear() + ':+' + maxDate.getFullYear,
        minDate: minDate,
        maxDate: maxDate,
        showOn: 'button',
        firstDay: 1,
        beforeShow: function (obj, inst) {
            var year = parseInt(sy.val());
            var month = parseInt(sm.val());
            var day = parseInt(sd.val());
            if (year > 0 && month > 0 && day > 0) {
                if (month < 10) month = '0' + month;
                if (day < 10) day = '0' + day;
                $(obj).datepicker('setDate', month + '/' + day + '/' + year);
            }
        },
        onClose: function (dateText, inst) {
            if (dateText != undefined && dateText.length > 0) {
                var date = dateText.split('/');
                var year = parseInt(date[2]);
                var month = parseInt(date[0]);
                var day = parseInt(date[1]);
                sy.val(year);
                sm.val(month);
                sd.val(day);
            }
        }
    });
}

【问题讨论】:

  • 好吧,如果 min-date 是今天,它应该应该从今天到 12 月显示,不是吗?如果要显示一年中的剩余时间,则应提供 min-date 作为今年的第一天。
  • 哦等等,maxDate.getFullYear。在maxDate.getFullYear 之后缺少()。另外,':+' 中的 + 是故意的吗?
  • 正如 briosheje 所说,这是因为缺少 (),这导致了错误的 yearRange 值:jsfiddle.net/uyk557da
  • @PatrickEvans :我认为你应该得到答案,因为你创建了小提琴,因此你应该发布一个包含小提琴的答案,我刚刚发现括号不见了,但不是真的确信这可能是真正的问题,而 patrick 测试了它,所以他应该得到这个答案的声誉;)
  • @briosheje,实际上它应该作为印刷错误关闭,因为 OP 知道将 () 放在另一个 getFullYear 语句中

标签: javascript jquery date datepicker


【解决方案1】:

试着去掉这条线:

yearRange: '-' + minDate.getFullYear() + ':+' + maxDate.getFullYear,

为我工作。

【讨论】:

  • 这一行需要在这里,因为我们对生日日期选择器使用相同的脚本,并且我们需要指定年份回到 120 年。
猜你喜欢
  • 1970-01-01
  • 2023-02-23
  • 1970-01-01
  • 1970-01-01
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多