]> source.dussan.org Git - jquery-ui.git/commitdiff
Fixed 3183 onSelect and onClose have inconsistent signatures
authorKeith Wood <kbwood.au@gmail.com>
Sun, 7 Sep 2008 08:38:09 +0000 (08:38 +0000)
committerKeith Wood <kbwood.au@gmail.com>
Sun, 7 Sep 2008 08:38:09 +0000 (08:38 +0000)
demos/functional/templates/ui.datepicker.html
tests/datepicker.js
ui/ui.datepicker.js

index 950d7342a55db5cf9663bdb21a8f2aa24293578c..1d7af8dbfef02a5a1ad577ed7266512c42ce1a8a 100644 (file)
@@ -234,10 +234,10 @@ function customRange(input) {
                                options: [
                                        {       desc: 'On select',      source: '$("#callbacks").datepicker({onSelect: function(date) { alert("The chosen date is " + date); }, showOn: "both", buttonImage: "templates/images/calendar.gif", buttonImageOnly: true});' },
                                        {       desc: 'On close',       source: '$("#callbacks").datepicker({onClose: function(date) { alert("Closed with date " + date); }, showOn: "both", buttonImage: "templates/images/calendar.gif", buttonImageOnly: true});' },
-                                       {       desc: 'On change of month/year',        source: '$("#callbacks").datepicker({onChangeMonthYear: function(date) { alert("Moved to month " + $.datepicker.formatDate("MM yy", date)); }, showOn: "both", buttonImage: "templates/images/calendar.gif", buttonImageOnly: true});' },
+                                       {       desc: 'On change of month/year',        source: '$("#callbacks").datepicker({onChangeMonthYear: function(year, month) { alert("Moved to month " + month + "/" + year); }, showOn: "both", buttonImage: "templates/images/calendar.gif", buttonImageOnly: true});' },
                                        {       desc: 'On select for range',    source: '$("#callbacks").datepicker({onSelect: function(date) { alert("The chosen dates are " + date); }, rangeSelect: true, numberOfMonths: 2, showOn: "both", buttonImage: "templates/images/calendar.gif", buttonImageOnly: true});' },
                                        {       desc: 'On close for range',     source: '$("#callbacks").datepicker({onClose: function(date) { alert("Closed with dates " + date); }, rangeSelect: true, numberOfMonths: 2, showOn: "both", buttonImage: "templates/images/calendar.gif", buttonImageOnly: true});' },
-                                       {       desc: 'On change of month/year for range',      source: '$("#callbacks").datepicker({onChangeMonthYear: function(date) { alert("Moved to month " + $.datepicker.formatDate("MM yy", date)); }, rangeSelect: true, numberOfMonths: 2, showOn: "both", buttonImage: "templates/images/calendar.gif", buttonImageOnly: true});' }
+                                       {       desc: 'On change of month/year for range',      source: '$("#callbacks").datepicker({onChangeMonthYear: function(year, month) { alert("Moved to month " + month + "/" + year); }, rangeSelect: true, numberOfMonths: 2, showOn: "both", buttonImage: "templates/images/calendar.gif", buttonImageOnly: true});' }
                                ]
                        },
 
index 308636bafda1e1aebceeee3f9f6ab2f4fbc7e0dd..268041a90b303ad6e0380f01633febda2b021f3f 100644 (file)
@@ -1031,21 +1031,21 @@ test('ranges', function() {
        var date1 = new Date();\r
        var date2 = new Date();\r
        // Select today - today\r
-       inp.val('').datepicker('show');\r
-       inp.simulate('keydown', {keyCode: $.simulate.VK_ENTER}).\r
+       inp.val('').datepicker('show').\r
+               simulate('keydown', {keyCode: $.simulate.VK_ENTER}).\r
                simulate('keydown', {keyCode: $.simulate.VK_ENTER});\r
        equalsDateArray(inp.datepicker('getDate'), [date1, date1],\r
                'Range - enter/enter');\r
        // Can't select prior to start date\r
-       inp.val('').datepicker('show');\r
-       inp.simulate('keydown', {keyCode: $.simulate.VK_ENTER}).\r
+       inp.val('').datepicker('show').\r
+               simulate('keydown', {keyCode: $.simulate.VK_ENTER}).\r
                simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_UP}).\r
                simulate('keydown', {keyCode: $.simulate.VK_ENTER});\r
        equalsDateArray(inp.datepicker('getDate'), [date1, date1],\r
                'Range - enter/ctrl+up/enter');\r
        // Can select after start date\r
-       inp.val('').datepicker('show');\r
-       inp.simulate('keydown', {keyCode: $.simulate.VK_ENTER}).\r
+       inp.val('').datepicker('show').\r
+               simulate('keydown', {keyCode: $.simulate.VK_ENTER}).\r
                simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_DOWN}).\r
                simulate('keydown', {keyCode: $.simulate.VK_ENTER});\r
        date2.setDate(date2.getDate() + 7);\r
@@ -1054,16 +1054,16 @@ test('ranges', function() {
        equals(inp.val(), $.datepicker.formatDate('mm/dd/yy', date1) + ' - ' +\r
                $.datepicker.formatDate('mm/dd/yy', date2), 'Range - value');\r
        // Select then cancel defaults to first date\r
-       inp.val('').datepicker('show');\r
-       inp.simulate('keydown', {keyCode: $.simulate.VK_ENTER}).\r
+       inp.val('').datepicker('show').\r
+               simulate('keydown', {keyCode: $.simulate.VK_ENTER}).\r
                simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_DOWN}).\r
                simulate('keydown', {keyCode: $.simulate.VK_ESC});\r
        equalsDateArray(inp.datepicker('getDate'), [date1, date1],\r
                'Range - enter/ctrl+down/esc');\r
        // Separator\r
        inp.datepicker('change', {rangeSeparator: ' to '}).\r
-               datepicker('hide').val('06/04/2008').datepicker('show');\r
-       inp.simulate('keydown', {keyCode: $.simulate.VK_ENTER}).\r
+               datepicker('hide').val('06/04/2008').datepicker('show').\r
+               simulate('keydown', {keyCode: $.simulate.VK_ENTER}).\r
                simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_DOWN}).\r
                simulate('keydown', {keyCode: $.simulate.VK_ENTER});\r
        equalsDateArray(inp.datepicker('getDate'),\r
@@ -1073,41 +1073,41 @@ test('ranges', function() {
                'Range separator - value');\r
        // Callbacks\r
        inp.datepicker('change', {onSelect: callback, rangeSeparator: ' - '}).\r
-               datepicker('hide').val('06/04/2008').datepicker('show');\r
-       inp.simulate('keydown', {keyCode: $.simulate.VK_ENTER}).\r
+               datepicker('hide').val('06/04/2008').datepicker('show').\r
+               simulate('keydown', {keyCode: $.simulate.VK_ENTER}).\r
                simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_DOWN}).\r
                simulate('keydown', {keyCode: $.simulate.VK_ENTER});\r
        equals(selectedDate, '06/04/2008 - 06/11/2008',\r
                'Range onSelect - enter/ctrl+down/enter');\r
-       inp.datepicker('change', {onChangeMonthYear: callback, onSelect: null}).\r
-               datepicker('hide').val('05/04/2008').datepicker('show');\r
-       inp.simulate('keydown', {keyCode: $.simulate.VK_PGUP}).\r
+       inp.datepicker('change', {onChangeMonthYear: callback2, onSelect: null}).\r
+               datepicker('hide').val('05/04/2008').datepicker('show').\r
+               simulate('keydown', {keyCode: $.simulate.VK_PGUP}).\r
                simulate('keydown', {keyCode: $.simulate.VK_ENTER}).\r
                simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_DOWN}).\r
                simulate('keydown', {keyCode: $.simulate.VK_ENTER});\r
-       equalsDate(selectedDate, new Date(2008, 4 - 1, 1),\r
+       equals(selectedDate, '2008/4',\r
                'Range onChangeMonthYear - enter/ctrl+down/enter');\r
        inp.datepicker('change', {onClose: callback, onChangeMonthYear: null}).\r
-               datepicker('hide').val('03/04/2008').datepicker('show');\r
-       inp.simulate('keydown', {keyCode: $.simulate.VK_ENTER}).\r
+               datepicker('hide').val('03/04/2008').datepicker('show').\r
+               simulate('keydown', {keyCode: $.simulate.VK_ENTER}).\r
                simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_DOWN}).\r
                simulate('keydown', {keyCode: $.simulate.VK_ENTER});\r
-       equalsDateArray(selectedDate, [new Date(2008, 3 - 1, 4),\r
-               new Date(2008, 3 - 1, 11)], 'Range onClose - enter/ctrl+down/enter');\r
+       equals(selectedDate, '03/04/2008 - 03/11/2008',\r
+               'Range onClose - enter/ctrl+down/enter');\r
        // Minimum/maximum\r
        date1 = new Date(2008, 5 - 1, 20);\r
        date2 = new Date(2008, 7 - 1, 2);\r
        inp.datepicker('change', {minDate: date1, maxDate: date2, onClose: null}).\r
-               datepicker('hide').val('06/04/2008').datepicker('show');\r
-       inp.simulate('keydown', {keyCode: $.simulate.VK_PGUP}).\r
+               datepicker('hide').val('06/04/2008').datepicker('show').\r
+               simulate('keydown', {keyCode: $.simulate.VK_PGUP}).\r
                simulate('keydown', {keyCode: $.simulate.VK_ENTER}).\r
                simulate('keydown', {keyCode: $.simulate.VK_PGDN}).\r
                simulate('keydown', {keyCode: $.simulate.VK_PGDN}).\r
                simulate('keydown', {keyCode: $.simulate.VK_ENTER});\r
        equalsDateArray(inp.datepicker('getDate'), [date1, date2],\r
                'Range min/max - pgup/enter/pgdn/pgdn/enter');\r
-       inp.val('06/04/2008').datepicker('show');\r
-       inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_UP}).\r
+       inp.val('06/04/2008').datepicker('show').\r
+               simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_UP}).\r
                simulate('keydown', {keyCode: $.simulate.VK_ENTER}).\r
                simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_DOWN}).\r
                simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_DOWN}).\r
@@ -1298,85 +1298,103 @@ function callback(date, inst) {
        selectedInst = inst;\r
 }\r
 \r
+function callback2(year, month, inst) {\r
+       selectedThis = this;\r
+       selectedDate = year + '/' + month;\r
+       selectedInst = inst;\r
+}\r
+\r
 test('events', function() {\r
        var inp = init('#inp', {onSelect: callback});\r
        var date = new Date();\r
        // onSelect\r
-       inp.val('').datepicker('show');\r
-       inp.simulate('keydown', {keyCode: $.simulate.VK_ENTER});\r
+       inp.val('').datepicker('show').\r
+               simulate('keydown', {keyCode: $.simulate.VK_ENTER});\r
        equals(selectedThis, inp[0], 'Callback selected this');\r
        equals(selectedInst, $.data(inp[0], PROP_NAME), 'Callback selected inst');\r
        equals(selectedDate, $.datepicker.formatDate('mm/dd/yy', date),\r
                'Callback selected date');\r
-       inp.val('').datepicker('show');\r
-       inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_DOWN}).\r
+       inp.val('').datepicker('show').\r
+               simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_DOWN}).\r
                simulate('keydown', {keyCode: $.simulate.VK_ENTER});\r
        date.setDate(date.getDate() + 7);\r
        equals(selectedDate, $.datepicker.formatDate('mm/dd/yy', date),\r
                'Callback selected date - ctrl+down');\r
-       inp.val('').datepicker('show');\r
-       inp.simulate('keydown', {keyCode: $.simulate.VK_ESC});\r
+       inp.val('').datepicker('show').\r
+               simulate('keydown', {keyCode: $.simulate.VK_ESC});\r
        equals(selectedDate, $.datepicker.formatDate('mm/dd/yy', date),\r
                'Callback selected date - esc');\r
        // onChangeMonthYear\r
-       inp.datepicker('change', {onChangeMonthYear: callback, onSelect: null}).\r
+       inp.datepicker('change', {onChangeMonthYear: callback2, onSelect: null}).\r
                val('').datepicker('show');\r
+       var newMonthYear = function(date) {\r
+               return date.getFullYear() + '/' + (date.getMonth() + 1);\r
+       };\r
        date = new Date();\r
        date.setDate(1);\r
        inp.simulate('keydown', {keyCode: $.simulate.VK_PGUP});\r
        date.setMonth(date.getMonth() - 1);\r
        equals(selectedThis, inp[0], 'Callback change month/year this');\r
        equals(selectedInst, $.data(inp[0], PROP_NAME), 'Callback change month/year inst');\r
-       equalsDate(selectedDate, date, 'Callback change month/year date - pgup');\r
+       equals(selectedDate, newMonthYear(date),\r
+               'Callback change month/year date - pgup');\r
        inp.simulate('keydown', {keyCode: $.simulate.VK_PGDN});\r
        date.setMonth(date.getMonth() + 1);\r
-       equalsDate(selectedDate, date, 'Callback change month/year date - pgdn');\r
+       equals(selectedDate, newMonthYear(date),\r
+               'Callback change month/year date - pgdn');\r
        inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP});\r
        date.setFullYear(date.getFullYear() - 1);\r
-       equalsDate(selectedDate, date, 'Callback change month/year date - ctrl+pgup');\r
+       equals(selectedDate, newMonthYear(date),\r
+               'Callback change month/year date - ctrl+pgup');\r
        inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_HOME});\r
        date.setFullYear(date.getFullYear() + 1);\r
-       equalsDate(selectedDate, date, 'Callback change month/year date - ctrl+home');\r
+       equals(selectedDate, newMonthYear(date),\r
+               'Callback change month/year date - ctrl+home');\r
        inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN});\r
        date.setFullYear(date.getFullYear() + 1);\r
-       equalsDate(selectedDate, date, 'Callback change month/year date - ctrl+pgdn');\r
+       equals(selectedDate, newMonthYear(date),\r
+               'Callback change month/year date - ctrl+pgdn');\r
        inp.datepicker('setDate', new Date(2007, 1 - 1, 26));\r
-       equalsDate(selectedDate, new Date(2007, 1 - 1, 1),\r
-               'Callback change month/year date - setDate');\r
+       equals(selectedDate, '2007/1', 'Callback change month/year date - setDate');\r
        selectedDate = null;\r
        inp.datepicker('setDate', new Date(2007, 1 - 1, 12));\r
        ok(selectedDate == null, 'Callback change month/year date - setDate no change');\r
        // onChangeMonthYear step by 2\r
        inp.datepicker('change', {stepMonths: 2}).\r
-               datepicker('hide').val('').datepicker('show');\r
-       inp.simulate('keydown', {keyCode: $.simulate.VK_PGUP});\r
+               datepicker('hide').val('').datepicker('show').\r
+               simulate('keydown', {keyCode: $.simulate.VK_PGUP});\r
        date.setMonth(date.getMonth() - 14);\r
-       equalsDate(selectedDate, date, 'Callback change month/year by 2 date - pgup');\r
+       equals(selectedDate, newMonthYear(date),\r
+               'Callback change month/year by 2 date - pgup');\r
        inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP});\r
        date.setMonth(date.getMonth() - 12);\r
-       equalsDate(selectedDate, date, 'Callback change month/year by 2 date - ctrl+pgup');\r
+       equals(selectedDate, newMonthYear(date),\r
+               'Callback change month/year by 2 date - ctrl+pgup');\r
        inp.simulate('keydown', {keyCode: $.simulate.VK_PGDN});\r
        date.setMonth(date.getMonth() + 2);\r
-       equalsDate(selectedDate, date, 'Callback change month/year by 2 date - pgdn');\r
+       equals(selectedDate, newMonthYear(date),\r
+               'Callback change month/year by 2 date - pgdn');\r
        inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN});\r
        date.setMonth(date.getMonth() + 12);\r
-       equalsDate(selectedDate, date, 'Callback change month/year by 2 date - ctrl+pgdn');\r
+       equals(selectedDate, newMonthYear(date),\r
+               'Callback change month/year by 2 date - ctrl+pgdn');\r
        // onClose\r
        inp.datepicker('change', {onClose: callback, onChangeMonthYear: null, stepMonths: 1}).\r
-               val('').datepicker('show');\r
-       inp.simulate('keydown', {keyCode: $.simulate.VK_ESC});\r
+               val('').datepicker('show').\r
+               simulate('keydown', {keyCode: $.simulate.VK_ESC});\r
        equals(selectedThis, inp[0], 'Callback close this');\r
        equals(selectedInst, $.data(inp[0], PROP_NAME), 'Callback close inst');\r
-       ok(selectedDate == null, 'Callback close date - esc');\r
-       inp.val('').datepicker('show');\r
-       inp.simulate('keydown', {keyCode: $.simulate.VK_ENTER});\r
-       equalsDate(selectedDate, new Date(), 'Callback close date - enter');\r
-       inp.val('02/04/2008').datepicker('show');\r
-       inp.simulate('keydown', {keyCode: $.simulate.VK_ESC});\r
-       equalsDate(selectedDate, new Date(2008, 2 - 1, 4), 'Callback close date - preset');\r
-       inp.val('02/04/2008').datepicker('show');\r
-       inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_END});\r
-       ok(selectedDate == null, 'Callback close date - ctrl+end');\r
+       equals(selectedDate, '', 'Callback close date - esc');\r
+       inp.val('').datepicker('show').\r
+               simulate('keydown', {keyCode: $.simulate.VK_ENTER});\r
+       equals(selectedDate, $.datepicker.formatDate('mm/dd/yy', new Date()),\r
+               'Callback close date - enter');\r
+       inp.val('02/04/2008').datepicker('show').\r
+               simulate('keydown', {keyCode: $.simulate.VK_ESC});\r
+       equals(selectedDate, '02/04/2008', 'Callback close date - preset');\r
+       inp.val('02/04/2008').datepicker('show').\r
+               simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_END});\r
+       equals(selectedDate, '', 'Callback close date - ctrl+end');\r
 });\r
 \r
 function highlight20(date, inst) {\r
index 17b483281fa1adbe495f51b483593208f6d40cf9..3aa138e0f5325a1e24dcc01321c3c424891af511 100644 (file)
@@ -665,7 +665,7 @@ $.extend(Datepicker.prototype, {
                        var onClose = this._get(inst, 'onClose');
                        if (onClose)
                                onClose.apply((inst.input ? inst.input[0] : null),
-                                       [this._getDate(inst), inst]);  // trigger custom callback
+                                       [(inst.input ? inst.input.val() : ''), inst]);  // trigger custom callback
                        this._datepickerShowing = false;
                        this._lastInput = null;
                        inst.settings.prompt = null;
@@ -1577,7 +1577,7 @@ $.extend(Datepicker.prototype, {
                var onChange = this._get(inst, 'onChangeMonthYear');
                if (onChange)
                        onChange.apply((inst.input ? inst.input[0] : null),
-                               [new Date(inst.selectedYear, inst.selectedMonth, 1), inst]);
+                               [inst.selectedYear, inst.selectedMonth + 1, inst]);
        },
        
        /* Determine the number of months to show. */