]> source.dussan.org Git - jquery-ui.git/commitdiff
Datepicker: fixed #4301 - option dateFormat getter does not return same value as...
authorKeith Wood <kbwood.au@gmail.com>
Wed, 1 Apr 2009 10:11:35 +0000 (10:11 +0000)
committerKeith Wood <kbwood.au@gmail.com>
Wed, 1 Apr 2009 10:11:35 +0000 (10:11 +0000)
tests/unit/datepicker/datepicker_options.js
ui/ui.datepicker.js

index b03040913cc06aee9497eb09934e5b68f44593ef..412519a4b5b1ed1f54b4846c0ac8d28115b5e434 100644 (file)
@@ -18,6 +18,7 @@ test('setDefaults', function() {
 test('option', function() {
        var inp = init('#inp');
        var inst = $.data(inp[0], PROP_NAME);
+       // Set option
        equals(inst.settings.showOn, null, 'Initial setting showOn');
        equals($.datepicker._get(inst, 'showOn'), 'focus', 'Initial instance showOn');
        equals($.datepicker._defaults.showOn, 'focus', 'Initial default showOn');
@@ -33,6 +34,16 @@ test('option', function() {
        equals(inst.settings.showOn, null, 'Clear setting showOn');
        equals($.datepicker._get(inst, 'showOn'), 'focus', 'Restore instance showOn');
        equals($.datepicker._defaults.showOn, 'focus', 'Retain default showOn');
+       // Get option
+       inp = init('#inp');
+       equals(inp.datepicker('option', 'showOn'), 'focus', 'Initial setting showOn');
+       inp.datepicker('option', 'showOn', 'button');
+       equals(inp.datepicker('option', 'showOn'), 'button', 'Change instance showOn');
+       inp.datepicker('option', 'showOn', undefined);
+       equals(inp.datepicker('option', 'showOn'), 'focus', 'Reset instance showOn');
+       same(inp.datepicker('option', 'all'), {duration: ''}, 'Get instance settings');
+       same(inp.datepicker('option', 'defaults'), $.datepicker._defaults,
+               'Get default settings');
 });
 
 test('change', function() {
index 947efc86993de10f4bfb37f4268ac18f13186e10..18b1aabf596fc7dd560fe5281fb06edb9bdb3bca 100644 (file)
@@ -364,31 +364,33 @@ $.extend(Datepicker.prototype, {
                }
        },
 
-       /* Update the settings for a date picker attached to an input field or division.
+       /* Update or retrieve the settings for a date picker attached to an input field or division.
           @param  target  element - the target input field or division or span
           @param  name    object - the new settings to update or
-                          string - the name of the setting to change or
-          @param  value   any - the new value for the setting (omit if above is an object) */
+                          string - the name of the setting to change or retrieve,
+                          when retrieving also 'all' for all instance settings or
+                          'defaults' for all global defaults
+          @param  value   any - the new value for the setting
+                          (omit if above is an object or to retrieve a value) */
        _optionDatepicker: function(target, name, value) {
+               var inst = this._getInst(target);
+               if (arguments.length == 2 && typeof name == 'string') {
+                       return (name == 'defaults' ? $.extend({}, $.datepicker._defaults) :
+                               (inst ? (name == 'all' ? $.extend({}, inst.settings) :
+                               this._get(inst, name)) : null));
+               }
                var settings = name || {};
                if (typeof name == 'string') {
                        settings = {};
                        settings[name] = value;
                }
-               var inst = this._getInst(target);
                if (inst) {
                        if (this._curInst == inst) {
                                this._hideDatepicker(null);
                        }
+                       var date = this._getDateDatepicker(target);
                        extendRemove(inst.settings, settings);
-                       var date = new Date();
-                       extendRemove(inst, {rangeStart: null, // start of range
-                               endDay: null, endMonth: null, endYear: null, // end of range
-                               selectedDay: date.getDate(), selectedMonth: date.getMonth(),
-                               selectedYear: date.getFullYear(), // starting point
-                               currentDay: date.getDate(), currentMonth: date.getMonth(),
-                               currentYear: date.getFullYear(), // current selection
-                               drawMonth: date.getMonth(), drawYear: date.getFullYear()}); // month being drawn
+                       this._setDateDatepicker(target, date);
                        this._updateDatepicker(inst);
                }
        },
@@ -1611,6 +1613,9 @@ $.fn.datepicker = function(options){
        if (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate'))
                return $.datepicker['_' + options + 'Datepicker'].
                        apply($.datepicker, [this[0]].concat(otherArgs));
+       if (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string')
+               return $.datepicker['_' + options + 'Datepicker'].
+                       apply($.datepicker, [this[0]].concat(otherArgs));
        return this.each(function() {
                typeof options == 'string' ?
                        $.datepicker['_' + options + 'Datepicker'].