]> source.dussan.org Git - jquery-ui.git/commitdiff
#2876 Fire event on change of month/year
authorKeith Wood <kbwood.au@gmail.com>
Thu, 12 Jun 2008 12:02:36 +0000 (12:02 +0000)
committerKeith Wood <kbwood.au@gmail.com>
Thu, 12 Jun 2008 12:02:36 +0000 (12:02 +0000)
ui/ui.datepicker.js

index 2c1a7378de115876b8d497d5cecdd856c9747f22..0db029928d53825c3ab5cf475b0e471837a32d05 100644 (file)
@@ -103,6 +103,7 @@ function Datepicker() {
                beforeShow: null, // Function that takes an input field and
                        // returns a set of custom settings for the date picker
                onSelect: null, // Define a callback function when a date is selected
+               onChangeMonthYear: null, // Define a callback function when the month or year is changed
                onClose: null, // Define a callback function when the datepicker is closed
                numberOfMonths: 1, // Number of months to show at a time
                stepMonths: 1, // Number of months to step back/forward
@@ -596,6 +597,7 @@ $.extend(Datepicker.prototype, {
                inst._drawMonth = inst._selectedMonth = date.getMonth();
                inst._drawYear = inst._selectedYear = date.getFullYear();
                this._adjustDate(inst);
+               inst._notifyChange();
        },
 
        /* Action for selecting a new month/year. */
@@ -605,6 +607,7 @@ $.extend(Datepicker.prototype, {
                inst[period == 'M' ? '_drawMonth' : '_drawYear'] =
                        select.options[select.selectedIndex].value - 0;
                this._adjustDate(inst);
+               inst._notifyChange();
        },
 
        /* Restore input focus after not changing month/year. */
@@ -1331,6 +1334,16 @@ $.extend(DatepickerInstance.prototype, {
                this._selectedDay = date.getDate();
                this._drawMonth = this._selectedMonth = date.getMonth();
                this._drawYear = this._selectedYear = date.getFullYear();
+               if (period == 'M' || period == 'Y')
+                       this._notifyChange();
+       },
+
+       /* Notify change of month/year. */
+       _notifyChange: function() {
+               var onChange = this._get('onChangeMonthYear');
+               if (onChange)
+                       onChange.apply((this._input ? this._input[0] : null),
+                               [new Date(this._selectedYear, this._selectedMonth, 1), this]);
        },
        
        /* Determine the number of months to show. */