bootstrap 在 $.when().done() 中调用时,datepicker beforeShowDay 不工作
bootstrap datepicker beforeShowDay not working when called inside $.when().done()
你好,在 ajax 调用以获取要在数据选择器中显示的日历日期之后,我调用了一个函数来使用日期参数数组初始化数据选择器...问题是 beforeShowDay 不工作。请注意,在 $.when().done() 之外调用时它工作正常,但默认情况下已经分配了日期,而不是来自 db;
这里是初始化数据选择器的函数:
function inizializeCalander(array){
var format ="dd/mm/yyyy";
var datesd = ['11/05/2020', '05/21/2020'];
var date = new Date();
var avaibleDates =array;
var id_Dates = new Array();
date.setDate(date.getDate());
$('.pickerdate').datepicker({
language: "it",
beforeShowDay: function(date) {
month = '' + (date.getMonth() + 1),
day = '' + date.getDate(),
year = date.getFullYear();
if (month.length < 2) {
month = '0' + month;
}
if (day.length < 2) {
day = '0' + day;
}
var dmy = day +"-"+month+"-"+year;
if (avaibleDates.includes(dmy)) {
return {classes: 'highlight', tooltip: 'Title'};
}else{
return {classes: 'disabled', tooltip: 'Title'};
}
},
startDate: date,
autoclose:true,
format: format,
//daysOfWeekDisabled: "0,1,2,3",
datesDisabled:datesd,
inline: true,
todayHighlight: true,
});
}
这是调用 inizializeClander 的时间:
$.when(getClanderDates()).done(function(ajax1Results){
var array = new Array();
array=ajax1Results;
console.log(array);
inizializeCalander(array);
});
//inizializeCalander(array);//if called outside it workd fine but with already assigned dates by default not from db;
你好,我可能来晚了,但你必须在你的函数 inizializeCalander 中这样做:
date.setDate(date.getDate());
$('.pickerdate').datepicker('destroy');
$('.pickerdate').datepicker({ ......... code
为什么?因为在调用 inizializeCalander() 之前 datapicker 已经初始化;因为 ajax 调用需要时间,所以首先你必须销毁它然后重新初始化它。希望有用 ;)
你好,在 ajax 调用以获取要在数据选择器中显示的日历日期之后,我调用了一个函数来使用日期参数数组初始化数据选择器...问题是 beforeShowDay 不工作。请注意,在 $.when().done() 之外调用时它工作正常,但默认情况下已经分配了日期,而不是来自 db;
这里是初始化数据选择器的函数:
function inizializeCalander(array){
var format ="dd/mm/yyyy";
var datesd = ['11/05/2020', '05/21/2020'];
var date = new Date();
var avaibleDates =array;
var id_Dates = new Array();
date.setDate(date.getDate());
$('.pickerdate').datepicker({
language: "it",
beforeShowDay: function(date) {
month = '' + (date.getMonth() + 1),
day = '' + date.getDate(),
year = date.getFullYear();
if (month.length < 2) {
month = '0' + month;
}
if (day.length < 2) {
day = '0' + day;
}
var dmy = day +"-"+month+"-"+year;
if (avaibleDates.includes(dmy)) {
return {classes: 'highlight', tooltip: 'Title'};
}else{
return {classes: 'disabled', tooltip: 'Title'};
}
},
startDate: date,
autoclose:true,
format: format,
//daysOfWeekDisabled: "0,1,2,3",
datesDisabled:datesd,
inline: true,
todayHighlight: true,
});
}
这是调用 inizializeClander 的时间:
$.when(getClanderDates()).done(function(ajax1Results){
var array = new Array();
array=ajax1Results;
console.log(array);
inizializeCalander(array);
});
//inizializeCalander(array);//if called outside it workd fine but with already assigned dates by default not from db;
你好,我可能来晚了,但你必须在你的函数 inizializeCalander 中这样做:
date.setDate(date.getDate());
$('.pickerdate').datepicker('destroy');
$('.pickerdate').datepicker({ ......... code
为什么?因为在调用 inizializeCalander() 之前 datapicker 已经初始化;因为 ajax 调用需要时间,所以首先你必须销毁它然后重新初始化它。希望有用 ;)