jQuery日期选择器有一个用于更改月份的选择框,但它没有显示完整的月份名称(但在其他月份确实如此),这真让我烦恼。
屏幕截图: http://i.imgur.com/Pdkq0.png
有没有办法自定义datepicker以显示完整的月份名称而无需修改源代码?
答案 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更好的方法,但这会给你一个想法:
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',
});