2017-03-08 85 views
1

我已经在我的主页中集成了jQuery DatePicker。问题是我不能使用beforeShowDay函数禁用周末,因为我已经使用beforeShowDay来标记特定的日期。我希望有可能在没有beforeShowDay函数的情况下禁用周末。jquery datepicker禁止beforeShowDay的周末

$(function() { 
    var eventDates = {}; 
    <?php 
    for ($i = 0; $i <= sizeof($view) - 1; $i++) 
    { 
     $date = explode(":" , $view[$i]); 
     echo "eventDates[ new Date('" . $date[1] . "')] = new Date('" . $date[1] . "');"; 
    } 
    ?> 

    $("#datepicker").datepicker({ 
    firstDay: 1, 
    dateFormat: "yy-mm-dd", 
    maxDate: new Date, 
    minDate: "2016-03-08", 
    dayNames: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], 
    dayNamesShort: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], 
    dayNamesMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], 
    onSelect: function(dateText, inst) { 
     $("#datepicker_value").val(dateText); 
     $(this).parent('form').submit(); 
    }, 
    beforeShowDay: function(date) { 
     var highlight = eventDates[date]; 
     if (highlight) { 
     return [true, "eventyellow", '']; 
     } else { 
     return [true, '', '']; 
     } 
    } 
    }); 
}); 

回答

0

您仍然可以使用beforeShowDay,你只需要你当前的逻辑与结合不包括周末。

假设你使用jQueryUI日期选择器,那么它有一个内置的方法来排除周末 - $.datepicker.noWeekends();。试试这个:

beforeShowDay: function(date) { 
    // exclude weekends 
    if (!$.datepicker.noWeekends(date)[0]) 
    return [false, '', ''];  

    // highlight dates 
    return [true, eventDates[date] ? 'eventyellow' : '', '']; 
} 

Working example

+0

它不会为我工作。 如果我使用你的代码(复制和粘贴),所有日期将被禁用。 – Simon

+0

道歉 - 我的逻辑倒退了。我更新了答案并添加了一个工作示例。 –

+0

哇。感谢您的帮助。有用。 – Simon