jQuery datepickerに月を変更するための選択ボックスがあるのに、完全な月の名前が表示されないのは本当に困惑しています(ただし、他の月には表示されます)。
スクリーンショット:http: //i.imgur.com/Pdkq0.png
ソースコードを変更せずに完全な月の名前を表示するように日付ピッカーをカスタマイズする方法はありますか?
jQuery datepickerに月を変更するための選択ボックスがあるのに、完全な月の名前が表示されないのは本当に困惑しています(ただし、他の月には表示されます)。
スクリーンショット:http: //i.imgur.com/Pdkq0.png
ソースコードを変更せずに完全な月の名前を表示するように日付ピッカーをカスタマイズする方法はありますか?
少し遅いかもしれませんが、現時点では同じ問題を抱えていて、簡単に修正できました。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
}
さらに良い解決策はmonthNames
、ロケール オブジェクトから使用することです。
// jQuery UI datepicker
$("#datepicker").datepicker({
monthNamesShort: $.datepicker.regional["en"].monthNames
});
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'
});
});
日付ピッカーを拡張し、問題のある関数を「オーバーライド」して、長い名前を渡すことができます。
$.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)
}
});
これには、ドロップダウンに完全な名前が表示されるという利点がありますが、入力要素が選択された日付で設定されている場合、設定/オプションで指定されたフォーマットを許可します。
//jquery UI 日付ピッカー
ここでMMは月のフルネームを表示します
$("#datepicker").datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'dd MM yy',
});
属性 " monthNamesShort
" を次のように定義できます:
$(".selector").datepicker({
monthNamesShort: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
});