Datepicker - 使用带自定义函数的默认函数

时间:2011-01-22 09:40:52

标签: jquery arrays jquery-ui jquery-ui-datepicker

目前,我有这个自定义功能:

var $myBadDates = new Array(<?php foreach($aryDates as $disabledate) { echo ' "$disabledate",'; } echo " 1"; ?>);
// Creates the array (The echo " 1"; is merely to close the array and will not affect the outcome
function checkAvailability(mydate) {
    var $return = true;
    var $returnclass = "available";
    $checkdate = $.datepicker.formatDate('yy-mm-dd', mydate);
    for (var i = 0; i < $myBadDates.length; i++) {
        if ($myBadDates[i] == $checkdate) {
            $return = false;
            $returnclass = "unavailable";
        }
    }
    return [$return, $returnclass];
}

datepicker部分如下:

$(function () {
    //To enable End Date picker only when Start Date has been chosen (And to disable all dates prior of said date)
    var end = $('#enddate').datepicker({
        numberOfMonths: 3,
        stepMonths: 3,
        beforeShowDay: checkAvailability
    });
    // Defining a function, because we're binding this to two different events
    function enableEnd() {
        end.attr('disabled', !this.value.length) // Enable the end input element if the first one has anything in it
        .datepicker('option', 'minDate', this.value); // Set the minimum date to the date in the first input
    }
    //End of function
    // Datepicker
    $('#startdate').datepicker({
        numberOfMonths: 3,
        stepMonths: 3,
        beforeShowDay: checkAvailability,
        minDate: +1,
        onSelect: enableEnd // Call enableEnd when a date is selected in the first datepicker
    }).bind('input', enableEnd); // Do the same when something is inputted by the user
    //hover states on the static widgets
    $('#dialog_link, ul#icons li').hover(

    function () {
        $(this).toggleClass('ui-state-hover');
    });
});
//End of Function​

我所做的是从我的SQL DB中,我使用自定义函数将开始日期和结束日期更改为日期数组,然后将其推送到单个数组中并用于禁用所述日期。 /> 第二个日期选择器仅在第一个有效日期返回为TRUE时启用。

现在的问题是:
我可以阻止我必须的所有日期。大。但是现在,我如何在这周围阻止周末? beforeShowDay: $.datepicker.noWeekends无法正常工作,因为我已经在使用自定义函数。所以,我必须进一步自定义我的自定义功能。我不能使用getDate()并显示那些&gt;比0和&lt; 7,那我怎么解决这个问题呢?

任何帮助,即使是小费的回答也会有所帮助。我已经尝试了一段时间,但我还没有到任何地方。感谢。

1 个答案:

答案 0 :(得分:1)

似乎相当简单,但我不明白为什么你不能使用getDay()函数:

function checkAvailability(d) {
    if (
        d.getDay() == 6 /* saturday */ ||
        d.getDay() == 0 /* sunday */
    ) {
        return [false,'unavailable unavailable-cuz-its-weekend'];
    }
    $checkdate = $.datepicker.formatDate('yy-mm-dd', d);
    for (var i = 0; i < $myBadDates.length; i++) {
        if($myBadDates[i] == $checkdate)
        {
            return [false, "unavailable"];
        }
    }
    return [true, "available"];
}