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

にはどうすればいいの onChangeMonthYear の「インスト」パラメータを使用することができ、月の最初の日を自動選択しますか?のjQuery UI DatePickerの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 
     } 
    }); 

答えて

8

することは、あなたは常にthisを使用することができます。

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

アクションでそれを参照してください:http://jsfiddle.net/william/sD8rL/2/

+0

これは完全に意味があります。私は実際に 'inst'を使用する特別な理由はありませんでした。 'this'は素晴らしいです。 – 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); 
    } 

日付形式を上書きしません。この方法は、(おそらく日付ピッカーの初期化時に設定);)

ご注意月の形式には:日付ピッカーは、Dateオブジェクトながら、数ヶ月のために1-12のフォーマットを扱います0〜11である。

これは助けてくれると期待しています。