jQuery UI datepicker onChangeMonthYear и параметр inst
$('.selector').datepicker({
onChangeMonthYear: function(year, month, inst) { ... }
});
Как я могу использовать параметр "inst"onChangeMonthYear для автоматического выбора первого дня месяца?
см.:http://jsfiddle.net/sD8rL/
в настоящее время я использую код ниже, но я чувствую, что должен иметь возможность использовать переменную "inst" более прямолинейно.
$(".datepicker" ).datepicker({
changeMonth: true,
changeYear: true,
maxDate:0,
onChangeMonthYear: function(year, month, inst){
// set date to 1st on year or month change
// this seems bit janky, but works
$('#' + inst.id).datepicker( "setDate", month + '/1/' + year );
// Can't I use the instatnce to set the date?
// $(inst).datepicker( "setDate", month + '/1/' + year ); // fails
// inst.datepicker( "setDate", month + '/1/' + year ); // fails
// inst.selectedDay = 1; // fails
// inst.currentDay = 1; // fails
}
});
2 ответов
Если нет особой причины, по которой вы хотите использовать inst
, вы всегда можете использовать this
:
onChangeMonthYear: function(year, month, inst){
$(this).datepicker( "setDate", month + '/1/' + year );
}
увидеть его в действии: http://jsfiddle.net/william/sD8rL/2/.
решение William Niu не учитывает другие форматы дат (например, dd-mm-yyyy). Вы лучше получить объект Date из datepicker и изменить его, как вам нравится (т. е. первый день месяца). После внесения изменений можно повторно передать измененный объект Date в datepicker.
dateFormat: "dd-mm-yy",
onChangeMonthYear: function(year, month, inst){
var selectedDate = $(this).datepicker( "getDate" );//Date object
selectedDate.setDate(1);//set first day of the month
selectedDate.setMonth(month-1);//month is 1-12, setMonth is 0-11
selectedDate.setFullYear(year);
$(this).datepicker( "setDate", selectedDate );
}
таким образом, вы не будете перезаписывать формат даты (возможно, установленный во время инициализации datepicker);)
обратите внимание на формат месяца: datepicker обрабатывает 1-12 формат для месяцев, в то время как объект даты 0-11.
надеюсь, это может помочь, пока!