0

我有一个 Multidatepicker 设置,带有一个下拉菜单,允许我根据下拉菜单中的频率选择启用/禁用日期。然后我还有一个日期数组......这些日期是要从初始加载的可用日期中“取消选择”的日期(基本上.ui-state-highlight从它们中删除类,但允许它们仍然被单击和“选择”,这会添加.ui-state-highlight回来)。

我需要找到一种在初始加载时循环遍历数组的方法,并在日历中模拟该日期的“单击”,这将删除 ui-state-highlight ...但如果它被重新单击,它将添加突出显示再次。

<select name="frequency" id="choose_frequency" name="ajax_choose_frequency">
      <option value="week">Every Week</option>
      <option value="2week">Every Two Weeks</option>
      <option value="3week">Every Three Weeks</option>
      <option value="monthly">Every Four Weeks</option>
 </select>

function update_picker(convert_date){
    var arr = [];
    var date = new Date(convert_date);
    var frequency = jQuery('select#choose_frequency option:checked').val();             
    for(i=0;i<10;i++){
        if(i == 0){
            var p = '';
        }else{
            if(frequency == 'week'){
                var p = 7;
            }else if(frequency == '2week'){
                var p = 14;
            }
            else if(frequency == '3week'){
                var p = 21;
            }else if(frequency == 'monthly'){
                var p = 28;
            }else{
                var p = 1;
                break;
            }
        }

        arr[i] = date.setDate(date.getDate()+p);
    }
    return arr;
}


function update_dates(defaultDate) {
    
    var frequency = jQuery('select#choose_frequency option:checked').val();
    var datedeb = new Date(defaultDate);
    var maxDate = 72;

    var arDate=[];
    var enable = false;

    for(var i = 1; i <maxDate; i++)
    {
        if(frequency == 'week'){
            var p = 7;
        }else if(frequency == '2week'){
            var p = 14;
        }
        else if(frequency == '3week'){
            var p = 21;
        }
        else if(frequency == 'monthly'){
            var p = 28;
        }else{
            var p = 1;
            break;
        }
        enable = i % p == 0;
        var newdate = new Date(datedeb.setDate(datedeb.getDate() + 1));
        if(!enable)arDate.push(newdate);  

    }
    return arDate;
}


var array = [17 Jun 2021, 21 Jun 2021, 29 June 2021];
var defaultDate = '27 May 2021';

jQuery('.multidatepicker').multiDatesPicker({
    dateFormat: "d M yy", 
    defaultDate: defaultDate,
    dayNamesMin: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
    monthNames: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", 
                 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
    maxDate: 72,
    minDate: defaultDate,
    addDisabledDates: update_dates(defaultDate),
    firstDay : 1,
    addDates:update_picker(defaultDate),
});

在初始加载时,我需要遍历日期数组,并从中删除“.ui-state-highlight”。

我试过removeDates:array了,但它什么也没做。

也许我需要在它们被传递到 addDates 之前从 update_picker 函数中删除日期?

4

0 回答 0