繁体   English   中英

在datepicker中的beforeShowDay内调用函数,javascript问题

[英]Calling a function within beforeShowDay in datepicker , javascript issue

该代码背后的想法是我想设置一些日期,该日期将在我的日期选择器中被禁用。 如果我以以下格式离开: beforeShowDay: editDays, ,,它可以工作。 但是我想以这种格式离开: beforeShowDay: function(dt) {并在那里调用函数editDays!。 但是正如您在我的代码中看到的那样,它不起作用。 实际上我不知道该如何调用该函数。 你能帮我做这个工作吗? 这是我的JavaScript代码:

$( document ).ready(function() {
    var request = $.ajax({
        type: "POST",
        url: "./actions/ajax/actiongetallfreedays.php",
        async: false
    });
    var freedays = $.parseJSON(request.responseText);
    var disabledDates  = [];

    for(var i = 0; i < freedays.length; i++){
        split = freedays[i].free_day.split("-");
        disabledDates[i] = split[0]+"/"+split[1]+"/"+split[2];
    }

    function editDays(date) {
        for (var i = 0; i < disabledDates.length; i++) {
            if (new Date(disabledDates[i]).toString() == date.toString()) {             
                 return [false];
            }
        }
        return [true];
    } 
});

这是我的主要功能:

function initDatePicker(cls, minDate, maxDate, beforeshowday) {
    beforeshowday = beforeshowday == "1" ? beforeshowday : "0";

    $(cls).datepicker({
            beforeShowDay: function(dt) {
                if (beforeshowday == 0) {
                    return [dt.getDay() == 1 || dt.getDay() == 2 || dt.getDay() == 3 || dt.getDay() == 4 || dt.getDay() == 5, ""];
                } else {
                    return [dt.getDay() == 0 || dt.getDay() == 6, ""];
                }
                editDays();
            },
            //   beforeShowDay: editDays,
            firstDay: 1,
            minDate: minDate,
            maxDate: maxDate,
            dateFormat: "yy-mm-dd",
            date: $(cls).val(),
            current: $(cls).val(),
            starts: 1,
            onBeforeShow: function() {
                $(cls).DatePickerSetDate($(cls).val(), true);
            },
            onChange: function(formated) {
                $(cls).val(formated);
                $(cls).DatePickerHide();
            }

        })
        .attr("readonly", "readonly");

}

未调用函数editDays()因为无论如何您都从匿名函数返回

beforeShowDay: function(dt) {
        if (beforeshowday == 0) {
            return [dt.getDay() == 1 || dt.getDay() == 2 || dt.getDay() == 3 || dt.getDay() == 4 || dt.getDay() == 5, ""];
        }
        else {
            return [dt.getDay() == 0 || dt.getDay() == 6, ""];
        }
       // actually should be calling editDays like this here, but it never reaches
        return editDays(dt);
    },

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM