Я почесал голову какое-то время, а потом обнаружил здесь некоторый код, опубликованный давным-давно, который выполнил трюк, однако он обновляет только один месяц, и объект, даже если он вызывается с помощью ajax, кажется, не обновляется. должным образом.
У меня плохой JS, и я умею рассказывать истории только из тех знаний программирования, которые у меня есть, выход JSON работает отлично и дозирует нужные мне значения.
У меня есть 1 блок выбора с раскрывающимся списком выбора рынка
2 Datepickers (от и до).
Идентификатор MarketID выводится правильно, но я все еще не могу сказать, в чем проблема, есть только данные за период с 2011 г. по декабрь 2012 г. по февраль с точки зрения дат, и отображается только декабрь 2011 г. Даже когда я пытаюсь использовать JSON, это данные.
Если бы вы, ребята, могли бы помочь мне с этим, было бы здорово!
<script>
var allowedDates = new Object();
function queryAllowedDates (year, month, id, market) {
$.ajax({
type: 'GET',
url: '/pstars/api/api_calendardates.php',
dataType: 'json',
success: function(response) {
allowedDates[id] = response.allowedDates;
},
data: {year:year,month:month,market:market},
async: false
});
}
$("#date_from").datepicker({
dateFormat: 'yy-mm-dd',
changeMonth: true,
changeYear: true ,
beforeShow: function (input) {
var currentDate = $(input).datepicker('getDate');
var id = $(input).attr('id');
var marketid = $('#d_market').val();
queryAllowedDates(currentDate.getFullYear(), currentDate.getMonth()+1,id,marketid);
},
onChangeMonthYear: function (year, month, inst) {
var marketid = $('#d_market').val();
queryAllowedDates(year, month, inst.input.attr('id'),marketid);
},
beforeShowDay: function (day) {
var id = $(this).attr('id');
var date_str = [
day.getFullYear(),
day.getMonth() + 1,
day.getDate()
].join('-');
if (allowedDates[id] != undefined && allowedDates[id][date_str]) {
return [true, 'good_date', 'This date is selectable'];
} else {
return [false, 'bad_date', 'This date is NOT selectable'];
}
}
});
$("#date_to").datepicker({
dateFormat: 'yy-mm-dd',
changeMonth: true,
changeYear: true ,
beforeShow: function (input) {
var currentDate = $(input).datepicker('getDate');
var id = $(input).attr('id');
var marketid = $('#d_market').val();
queryAllowedDates(currentDate.getFullYear(), currentDate.getMonth()+1,id,marketid);
},
onChangeMonthYear: function (year, month, inst) {
var marketid = $('#d_market').val();
queryAllowedDates(year, month, inst.input.attr('id'),marketid);
},
beforeShowDay: function (day) {
var id = $(this).attr('id');
var date_str = [
day.getFullYear(),
day.getMonth() + 1,
day.getDate()
].join('-');
if (allowedDates[id] != undefined && allowedDates[id][date_str]) {
return [true, 'good_date', 'This date is selectable'];
} else {
return [false, 'bad_date', 'This date is NOT selectable'];
}
}
});
</script>