使用行和列中的datepicker显示任意数月的月份

时间:2016-01-01 12:15:43

标签: javascript jquery jquery-ui-datepicker

我想使用multidatespicker显示13个月。我用下面的代码得到了这个:

$(document).ready(function(){

        $('#my_calendar').multiDatesPicker({
            numberOfMonths: [4, 4],
            dateFormat: 'dd-mm-yy',
            defaultDate: '01-01-2015',                
            monthNames: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
            dayNamesMin: ['Lun', 'Mar', 'Mie', 'Jue', 'Vie', 'Sab', 'Dom'],
            onSelect: function(value, date) { 
                $("#my_calendar > div > div.ui-datepicker-group").slice(-3).remove();   
                //$('#my_calendar').multiDatesPicker("refresh");
            }
        });

        $("#my_calendar > div > div.ui-datepicker-group").slice(-3).remove();               
   });

当multidatespicker加载时,正确显示13个月。但是,当事件onselect触发时,刷新multidatespicker并显示16个月。我试图将“.slice(-3).remove()”也放入onSelect主体,但它没有用。

如何避免刷新?

1 个答案:

答案 0 :(得分:0)

问题解决了。

我已经修改了" jquery-ui.js"这样的图书馆: 1.添加一个名为numberOfHiddenMonths的新属性:

A19_c
  1. 更新" _updateDatepicker"函数添加这些行:

    /* Determine the number of hidden months to show. */
    _getNumberOfHiddenMonths: function (inst) {
        var numHiddenMonths = this._get(inst, "numberOfHiddenMonths");
        return (numHiddenMonths == null ? 0 : numHiddenMonths);
    }
    
  2. 现在,我可以使用下一个代码隐藏我想要的月数,在我的情况下,3个月:

    _updateDatepicker: function(inst) {
    this.maxRows = 4; //Reset the max number of rows being displayed (see #7043)
    datepicker_instActive = inst; // for delegate hover events
    inst.dpDiv.empty().append(this._generateHTML(inst));
    this._attachHandlers(inst);
    
    /* This is the code necesary to hide the months */    
    var numOfHiddenMonths=this._getNumberOfHiddenMonths(inst);
    if (numOfHiddenMonths>0) $("#" + inst.id + " > div > div.ui-datepicker-group").slice(-1*numOfHiddenMonths).remove();
    /*------------- End -------------------------------------*/