$('.selector').datepicker({
onChangeMonthYear: function(year, month, inst) { ... }
});
如何使用 onChangeMonthYear 的'inst'参数自动选择当月的第一天?
请参阅: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
}
});
答案 0 :(得分:8)
如果没有特别原因要使用inst
,您可以随时使用this
:
onChangeMonthYear: function(year, month, inst){
$(this).datepicker( "setDate", month + '/1/' + year );
}
答案 1 :(得分:1)
William Niu的解决方案并未考虑其他日期格式(例如dd-mm-yyyy)。 您最好从日期选择器中获取Date对象,并按照您喜欢的方式进行修改(即设置该月的第一天)。修改后,您可以将修改后的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格式表示月份,而Date对象处理0-11。
希望这可以帮助,再见!