jQuery Datepicker - 在选择框中显示完整的月份名称

时间:2012-12-13 16:58:07

标签: jquery jquery-ui datepicker jquery-ui-datepicker

jQuery日期选择器有一个用于更改月份的选择框,但它没有显示完整的月份名称(但在其他月份确实如此),这真让我烦恼。

屏幕截图: http://i.imgur.com/Pdkq0.png

有没有办法自定义datepicker以显示完整的月份名称而无需修改源代码?

6 个答案:

答案 0 :(得分:11)

也许有点晚了,但此刻我遇到了同样的问题而且很容易修复。在调用datepicker函数之前获取monthnames数组,将它们放入一个新变量并通过调用该变量来更改短名称:

var fullmonth_array = $.datepicker.regional['nl'].monthNames; // change 'nl' to your own language of course
$('input[name="date-of-birth"]').datepicker(
{
   changeYear               : true,
   changeMonth              : true,
   yearRange                : "-85:-18",
   maxDate                  : "-18Y",
   minDate                  : "-85Y",
   monthNamesShort          : fullmonth_array
   // other stuff
}

答案 1 :(得分:7)

更好的解决方案是使用您的语言环境对象中的monthNames

// jQuery UI datepicker
$("#datepicker").datepicker({
    monthNamesShort: $.datepicker.regional["en"].monthNames
});

答案 2 :(得分:1)

不要找到比更新UI datepicker更好的方法,但这会给你一个想法:

DEMO

var months = ["January", "February", "March", "April", "May", "June",
                  "July", "August", "September", "October", "November", "December"];
var uDatepicker = $.datepicker._updateDatepicker;
$.datepicker._updateDatepicker = function() {
    var ret = uDatepicker.apply(this, arguments);
    var $sel = this.dpDiv.find('select');
    $sel.find('option').each(function(i) {
        $(this).text(months[i]);
    });
    return ret;
};

$(function() {
    $("#id").datepicker({
        changeMonth: true,
        dateFormat: 'MM yy'
    });
});​

答案 3 :(得分:1)

你可以扩展datepicker并“覆盖”有问题的函数,传入长名称。

$.extend($.datepicker, {
    __base__generateMonthYearHeader: $.datepicker._generateMonthYearHeader,

    _generateMonthYearHeader: function (inst,
                                        drawMonth,
                                        drawYear,
                                        minDate,
                                        maxDate,
                                        secondary,
                                        monthNames,
                                        monthNamesShort) {
        return $.datepicker.__base__generateMonthYearHeader(
            inst,
            drawMonth,
            drawYear,
            minDate,
            maxDate,
            secondary,
            monthNames,
            monthNames)
    }
});

这样做的好处是可以在下拉列表中显示全名,但是当输入元素设置为所选日期时,允许在settings / options中指定格式。

答案 4 :(得分:0)

您可以将属性“monthNamesShort”定义为:

 $(".selector").datepicker({
   monthNamesShort: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
 });

答案 5 :(得分:0)

// jquery UI datepicker

这里MM显示月份的全名

$("#datepicker").datepicker({
            changeMonth: true,
            changeYear: true,
            dateFormat: 'dd MM yy',
});