Datepicker - использование функции по умолчанию с пользовательской функцией - PullRequest
0 голосов
/ 22 января 2011

В настоящее время у меня есть эта пользовательская функция:

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, я используюпользовательская функция, которая изменяет дату начала и дату окончания на массив дат, который затем помещается в один массив и используется для отключения указанных дат.
Второй указатель даты включается только в том случае, если допустимая дата первойвозвращается как TRUE.

Теперь проблема заключается в следующем:
Я могу заблокировать все даты, которые мне нужно.Отлично.Но теперь, как я могу заблокировать выходные на вершине этого?
beforeShowDay: $.datepicker.noWeekends не может работать, потому что я уже использую пользовательскую функцию.Итак, я должен настроить свою пользовательскую функцию еще дальше.Я не могу использовать getDate () и показывать те, которые> 0 и <7, так как я могу решить эту проблему?</p>

Любая помощь, ответ даже подсказка поможет.Я пытался это некоторое время, и я ничего не получил.Спасибо.

1 Ответ

1 голос
/ 22 января 2011

Кажется довольно простым, но я не понимаю, почему вы не можете использовать 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"];
}
...