2012-12-13 73 views
5

這真的讓我感到困擾,jQuery datepicker有一個用於更改月份的選擇框,但它不顯示完整的月份名稱(但它在其他月份)。jQuery Datepicker - 在選擇框中顯示完整的月份名稱

截圖:http://i.imgur.com/Pdkq0.png

有沒有一種方法來定製日期選擇器可顯示完整的月份名稱,而無需修改源代碼?

+0

你知道嗎,它真的很難調試圖片... –

+0

你並不需要調試一切。我在問如何自定義jQuery UI日期選擇器。 – BadHorsie

+0

好吧,我不知道它在datepicker中的原始選項,我認爲這是一個自定義的,非常抱歉 –

回答

9

也許一點點遲了,但我在這個時候遇到了同樣的問題,而且很容易修復。致電前的日期選擇器功能得到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

如果有人遇到這爲了今天的工作,你應該把'$ .datepicker.regional ['nl']。monthNames'改爲'$ .datepicker._defaults.monthNames' –

1

不要找比更新UI日期選擇更好的辦法,但是,讓你的想法:

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' 
    }); 
});​ 
+0

謝謝,這個作品除了它不是很正確。如果選擇菜單中沒有12個月的話,那麼月份是錯誤的。例如,如果當前月份是十二月份,則只會在選擇菜單中顯示十二月份,但根據您的腳本,它將被稱爲「一月份」。要修復,'$(this).text(months [i]);'需要'$(this).text(months [$(this).attr('value')]);' – BadHorsie

0

可以定義屬性 「monthNamesShort」 爲:

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

可以延長日期選擇器和「覆蓋」有問題的功能,通過在長名。

$.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) 
    } 
}); 

這在下拉顯示全名,但允許在設置/選項中指定的格式,當輸入元素設置與選定日期的權益。

7

更好的解決方案是從您的語言環境對象中使用monthNames

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

// jQuery UI的日期選擇器

這裏MM顯示月份的全名

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