2011-09-12 50 views
7
$('.selector').datepicker({ 
    onChangeMonthYear: function(year, month, inst) { ... } 
}); 

如何使用的onChangeMonthYear到「出師表」參數自動選擇每月的第一天?jQuery UI的日期選擇器onChangeMonthYear和研究所參數

見:http://jsfiddle.net/sD8rL/

我目前使用下面的代碼,但我覺得我應該能夠使用「出師表」變量更直接的方式。

$(".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 
     } 
    }); 

回答

8

如果要使用inst沒有特別的原因,你可以隨時使用this

onChangeMonthYear: function(year, month, inst){ 
    $(this).datepicker("setDate", month + '/1/' + year); 
    } 

看到它在行動:http://jsfiddle.net/william/sD8rL/2/

+0

這使得完全意義上我沒有任何特別的理由使用'inst','這個'很好。 – ActionOwl

1

William Niu的解決方案不考慮其他日期格式(如dd-mm-yyyy)。 您最好從datepicker中獲取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); 
    } 

這樣你不會覆蓋日期格式(日期選擇器初始化過程中可能設置);)

注重月份格式:日期選擇器句柄月1-12格式,而Date對象是0-11。

希望這可以幫助,再見!