Я использую datepicker jQuery, откуда список объектов заполняется вызова ajax каждый раз, когда дата выбрана от встроенного объекта datepicker. Работы сценария, прекрасные за исключением того, что я не могу инициировать onSelect событие для заполнения моего первоначального списка объектов.
Я мог обойти эту проблему, просто заполнив список первоначально с помощью php, но я действительно хотел бы избежать этого.
$(document).ready(function(){
//create date pickers
$("#date_calendar").datepicker(
{
changeMonth: true,
changeYear: true,
dateFormat: 'yy-mm-dd',
defaultDate: $.datepicker.parseDate("y-m-d", $('#date').val()),
onSelect: function(dateText, inst)
{
alert('onSelect triggered! Yay!');
$('#date').val($.datepicker.formatDate("yy-mm-dd", $('#date_calendar').datepicker('getDate')));
// Ajax for populating days when selected
$.post(
"server_requests/show_day.php",
{
date: $('#date').val(),
user_id: $('#user_id').val()
},
function(data)
{
//return function
$('#my_day_tasks').html(data.resultTable);
},
"json"
);
}
}).disableSelection();
$("#date_calendar").trigger('onSelect');
});
Любая справка ценится:)
Не могли бы вы просто рефакторировать, что функцию самостоятельно, которые вы повторно используете? Строго говоря, выбор DatePicker не действительно Что происходит на странице нагрузки. Вы просто хотите сделать ровно то же самое, что происходит, когда DatePicker действительно выбран.
function populateList(dateText, inst)
{
alert('alert test');
$('#date').val($.datepicker.formatDate("yy-mm-dd",$('#date_calendar').datepicker('getDate')));
// Ajax for populating days when selected
$.post("server_requests/show_day.php",
{
date: $('#date').val(),
user_id: $('#user_id').val()
},
function(data)
{
//return function
$('#my_day_tasks').html(data.resultTable);
},
"json"
);
}
$(document).ready(function(){
//create date pickers
$("#date_calendar").datepicker(
{
changeMonth: true,
changeYear: true,
dateFormat: 'yy-mm-dd',
defaultDate: $.datepicker.parseDate("y-m-d", $('#date').val()),
onSelect: populateList
}).disableSelection();
// i'm not bothering to pass the input params here, because you're not using them anyway
populateList();
});
Вы можете попробовать что-то подобное -
$(document).ready(function(){
//when page loads
SetDateTime(null);
//create date pickers
$("#date_calendar").datepicker(
{
changeMonth: true,
changeYear: true,
dateFormat: 'yy-mm-dd',
defaultDate: $.datepicker.parseDate("y-m-d", $('#date').val()),
onSelect: function(dateText, inst)
{
SetDateTime(dateText);
}
}).disableSelection();
$("#date_calendar").trigger('onSelect');
});
function SetDateTime(selectedDate)
{
if(selectedDate == null)
{
//get todays date
var dateNow = new Date();
//if its a single digit day, add a zero before it
var sDay = dateNow.getDate().toString();
if(sDay.length == 1)
{
sDay = "0" + sDay;
}
selectedDate = dateNow.getFullYear() + "-" + (dateNow.getMonth() + 1) + "-" + sDay;
//load timetable
ShowDay(selectedDate);
}
else
{
var ds = selectedDate.split("-");
//load timetable
ShowDay(selectedDate);
}
}
function ShowDay(dateToday)
{
alert('onSelect triggered! Yay!');
$('#date').val($.datepicker.formatDate("yy-mm-dd", $('#date_calendar').datepicker('getDate')));
// Ajax for populating days when selected
$.post(
"server_requests/show_day.php",
{
date: dateToday,
user_id: $('#user_id').val()
},
function(data)
{
//return function
$('#my_day_tasks').html(data.resultTable);
},
"json"
);
}