Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在datepicker中的beforeShowDay内调用函数,javascript问题_Javascript_Datepicker - Fatal编程技术网

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

在datepicker中的beforeShowDay内调用函数,javascript问题,javascript,datepicker,Javascript,Datepicker,这段代码背后的想法是,我想设置一些日期,这些日期将在我的日期选择器中被禁用。如果我以以下格式离开:beforeShowDay:editDays,,它就可以工作了。但是我想以这种格式离开:beforeShowDay:function(dt){并在那里调用函数editDays!。但正如您在我的代码中看到的,它不起作用。实际上我不知道如何调用该函数。您能帮我完成这项工作吗?这是我的javascript代码: $( document ).ready(function() { var reques

这段代码背后的想法是,我想设置一些日期,这些日期将在我的日期选择器中被禁用。如果我以以下格式离开:
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];
    } 
});
函数
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);
    },

返回编辑天数()返回语句之前的方法。只是因为返回语句放在if条件中,而editDays方法在最后调用,所以此函数不会出现。其次,editDays方法需要一个方法调用中缺少的参数。例如,它也不起作用。但如何更改editDays以保持条件?你已经开始了我指出了应用静态(不可更改的规则)的地方过滤掉日期。结果跳过应用动态逻辑的
editDays
:过滤掉从ajax请求到达的日期。但是,从您当前的代码片段来看,
editDates
initDatePicker
中甚至不可访问,因为它是在
ready
处理程序中定义的。因此…如果您创建一个jsfiddle/plunker并描述所需的行为我可以在那里修复它
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);
    },