]> source.dussan.org Git - jquery-ui.git/commitdiff
Datepicker: Only generate yearshtml once. Fixes #7176 - Datepicker shows only single...
authorScott González <scott.gonzalez@gmail.com>
Mon, 4 Apr 2011 11:55:42 +0000 (07:55 -0400)
committerScott González <scott.gonzalez@gmail.com>
Mon, 4 Apr 2011 11:56:52 +0000 (07:56 -0400)
(cherry picked from commit 98c53d8432990f2c674e3a1274141b64a87d8ee9)

ui/jquery.ui.datepicker.js

index b07a5ee7236770f702e8854e03da7af7756efc46..61c2b69b4ad43dfbfb77a3ea186cbf38ff8d13d6 100644 (file)
@@ -1575,40 +1575,42 @@ $.extend(Datepicker.prototype, {
                if (!showMonthAfterYear)
                        html += monthHtml + (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '');
                // year selection
-               inst.yearshtml = '';
-               if (secondary || !changeYear)
-                       html += '<span class="ui-datepicker-year">' + drawYear + '</span>';
-               else {
-                       // determine range of years to display
-                       var years = this._get(inst, 'yearRange').split(':');
-                       var thisYear = new Date().getFullYear();
-                       var determineYear = function(value) {
-                               var year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) :
-                                       (value.match(/[+-].*/) ? thisYear + parseInt(value, 10) :
-                                       parseInt(value, 10)));
-                               return (isNaN(year) ? thisYear : year);
-                       };
-                       var year = determineYear(years[0]);
-                       var endYear = Math.max(year, determineYear(years[1] || ''));
-                       year = (minDate ? Math.max(year, minDate.getFullYear()) : year);
-                       endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);
-                       inst.yearshtml += '<select class="ui-datepicker-year" ' +
-                               'onchange="DP_jQuery_' + dpuuid + '.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'Y\');" ' +
-                               'onclick="DP_jQuery_' + dpuuid + '.datepicker._clickMonthYear(\'#' + inst.id + '\');"' +
-                               '>';
-                       for (; year <= endYear; year++) {
-                               inst.yearshtml += '<option value="' + year + '"' +
-                                       (year == drawYear ? ' selected="selected"' : '') +
-                                       '>' + year + '</option>';
-                       }
-                       inst.yearshtml += '</select>';
-                       //when showing there is no need for later update
-                       if( ! $.browser.mozilla ){
-                               html += inst.yearshtml;
-                               inst.yearshtml = null;
-                       } else {
-                               // will be replaced later with inst.yearshtml
-                               html += '<select class="ui-datepicker-year"><option value="' + drawYear + '" selected="selected">' + drawYear + '</option></select>';
+               if ( !inst.yearshtml ) {
+                       inst.yearshtml = '';
+                       if (secondary || !changeYear)
+                               html += '<span class="ui-datepicker-year">' + drawYear + '</span>';
+                       else {
+                               // determine range of years to display
+                               var years = this._get(inst, 'yearRange').split(':');
+                               var thisYear = new Date().getFullYear();
+                               var determineYear = function(value) {
+                                       var year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) :
+                                               (value.match(/[+-].*/) ? thisYear + parseInt(value, 10) :
+                                               parseInt(value, 10)));
+                                       return (isNaN(year) ? thisYear : year);
+                               };
+                               var year = determineYear(years[0]);
+                               var endYear = Math.max(year, determineYear(years[1] || ''));
+                               year = (minDate ? Math.max(year, minDate.getFullYear()) : year);
+                               endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);
+                               inst.yearshtml += '<select class="ui-datepicker-year" ' +
+                                       'onchange="DP_jQuery_' + dpuuid + '.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'Y\');" ' +
+                                       'onclick="DP_jQuery_' + dpuuid + '.datepicker._clickMonthYear(\'#' + inst.id + '\');"' +
+                                       '>';
+                               for (; year <= endYear; year++) {
+                                       inst.yearshtml += '<option value="' + year + '"' +
+                                               (year == drawYear ? ' selected="selected"' : '') +
+                                               '>' + year + '</option>';
+                               }
+                               inst.yearshtml += '</select>';
+                               //when showing there is no need for later update
+                               if( ! $.browser.mozilla ){
+                                       html += inst.yearshtml;
+                                       inst.yearshtml = null;
+                               } else {
+                                       // will be replaced later with inst.yearshtml
+                                       html += '<select class="ui-datepicker-year"><option value="' + drawYear + '" selected="selected">' + drawYear + '</option></select>';
+                               }
                        }
                }
                html += this._get(inst, 'yearSuffix');