在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);
},