繁体   English   中英

使用jquery ui datepicker重新聚焦相同的datepicker输入时显示错误的月份和年份

[英]Show wrong month and year when refocused same datepicker input with using jquery ui datepicker

我想只显示月份和年份。 如果我在选择日期后重新聚焦相同的输入,则显示错误的月份和年份未显示先前选择的月份和年份。 例如,我选择2010年12月,然后重新聚焦2015年4月显示的相同输入,如下图所示。 我怎样才能?

在此输入图像描述

HTML

<input type="text" class="dp" readonly="true">

CSS

.ui-datepicker-calendar {
    display: none;
}

JS

$('.dp').datepicker({
    changeMonth: true,
    changeYear: true,
    showButtonPanel: true,
    dateFormat: 'mm.yy',
    onClose: function (dateText, inst) {
        $(this).datepicker('setDate', new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay));
    }
});

http://jsfiddle.net/46tx62vu/

datepicker期望能够将显示的日期版本解析为javascript日期对象。

一种方法是为您的特殊日期格式添加自定义parseDate函数。 下面的代码查找“mm.yy”的特殊格式,如果找到,则将值解析为日期。 如果格式是其他任何内容,则将处理传递给原始的datepicker.parseDate。

var standardParseDate = $.datepicker.parseDate;

function customParseDate( format, value, options ) {
    if (format === 'mm.yy') {
        var dt = (value + ".").split(".");

        var month = parseInt(dt[0]) - 1;
        var year = parseInt(dt[1]);

        if (year < 100) {
            year += 2000;
        }

        if (isNaN(month) || isNaN(year)) {
            return null;
        }

        return new Date(year, month, 1);
    } else {
        return standardParseDate(format,value,options);
    }
}

$.datepicker.parseDate = customParseDate;

JSFiddle: http//jsfiddle.net/3drfd35t/

customParseDate的其他代码:

    } else if (format === 'M-yy') {
      var datestr = value;
      if (datestr.length > 0) {
        var y = datestr.substring(datestr.length - 4, datestr.length);  // last 4 chars
        var m = jQuery.inArray(datestr.substring(0, datestr.length - 5), options.monthNamesShort);
        var newDate = new Date(y, m, 1);
        console.log("customParseDate " + "m:" + m + ", y:" + y); // dbg
        return newDate;
      } else {
        console.log("customParseDate " + "null"); // dbg
        return null;
      }
   } else . . .

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM