为函数添加第二个语句

时间:2012-04-05 20:55:42

标签: jquery function datepicker

更新我的代码以反映我尝试合并两种语句。

function unavailableDays(date) {
//date array to be disabled
var disabledDays = ["1963-3-31", "1965-9-18", "1965-9-19",
"1965-10-2", "1965-10-3", "1965-10-9", "1965-10-10"];

var yy = date.getFullYear(), mm = date.getMonth(), dd = date.getDate();
for (i = 0; i < disabledDays.length; i++) {
if($.inArray(yy + '-' + (mm+1) + '-' + dd,disabledDays) != -1 || new Date() < date) {
return [false];
}
}
return [true];

//date range to be disabled
var first = new Date("1978-8-10");
var last = new Date("1978-11-05");
var unavailableRange = []; 

var yy = date.getFullYear(), mm = date.getMonth(), dd = date.getDate();
for(j = first; j < last; j.setDate(j.getDate() + 7)){
if($.inArray(yy + '-' + (mm+1) + '-' + dd,unavailableRange) != -1 || new Date() < date) {
return [false];
}
}
return [true];
}

我正在尝试将这个初始变量与日期范围合并到下面的unavailableDays函数中,以便我可以在datepicker中的beforeShowDay中使用它来禁用日期。我已经尝试创建一个单独的函数,但这对于beforeShowDate不起作用,所以我认为它需要在其中。

var first = new Date("1978-08-10");
var last = new Date("1978-11-05");
var dates = [];

for (var i = first; i < last; i.setDate(i.getDate() + 7))
dates.push(new Date);


var disabledDays = ["1963-2-17", "1963-2-24", "1963-3-3", "1963-3-10", "1963-3-17", "1963-3-24", "1963-3-31", "1965-9-18", "1965-9-19", "1965-10-2", "1965-10-3", "1965-10-9", "1965-10-10"];

function unavailableDays(date) {
    var yy = date.getFullYear(),
        mm = date.getMonth(),
        dd = date.getDate();
    for (i = 0; i < disabledDays.length; i++) {
        if ($.inArray(yy + '-' + (mm + 1) + '-' + dd, disabledDays) != -1 || new Date() < date) {
            return [false];
        }
    }
    return [true];
}

$(document).ready(function () {
    $('.selector').datepicker({
        inline: true,
        dateFormat: 'yy-mm-dd',
        constrainInput: true,
        changeYear: true,
        changeMonth: true,
        gotoCurrent: true,
        minDate: new Date(1962, 1 - 1, 1),
        //months are index-based(1-1)
        maxDate: new Date(2011, 10 - 1, 24),
        yearRange: '-60y',
        beforeShowDay: unavailableDays,
        onSelect: function (dateText, inst) {
            $("#img").attr("src", "http://www.example.com" + dateText + ".jpg");

            var chosenDates = $.datepicker.parseDate('yy-mm-dd', dateText);
            var backToString = $.datepicker.formatDate('MM dd' + ',' + ' yy', chosenDates);
            $('.info').html('You are viewing:' + '<br />' + backToString);
        }
    });

1 个答案:

答案 0 :(得分:0)

您应该将unavailableDays函数的返回值放入变量并在让操作继续之前测试该值,因此必须以编程方式等待该函数完成才能继续操作。

onSelect: function (dateText, inst) {
var blackouts = unavailableDays(date);
    if(blackouts==true){
        $("#img").attr("src", "http://www.example.com" + dateText + ".jpg");

        var chosenDates = $.datepicker.parseDate('yy-mm-dd', dateText);
        var backToString = $.datepicker.formatDate('MM dd' + ',' + ' yy', chosenDates);
        $('.info').html('You are viewing:' + '<br />' + backToString);
    }
}