]> source.dussan.org Git - jquery-ui.git/commitdiff
Datepicker: Updated the range tests so you can't navigate past the yearRange. Fixes...
authorJay Merrifield <fracmak@gmail.com>
Wed, 14 Nov 2012 02:07:48 +0000 (21:07 -0500)
committerMike Sherov <mike.sherov@gmail.com>
Wed, 14 Nov 2012 02:08:55 +0000 (21:08 -0500)
tests/unit/datepicker/datepicker_options.js
ui/jquery.ui.datepicker.js

index 9078a23747be9927befe106de828c86f43b4efc3..7d2b070fac720d855f34e33600421e71e46ee30d 100644 (file)
@@ -322,9 +322,10 @@ test('miscellaneous', function() {
 });
 
 test('minMax', function() {
-       expect( 17 );
+       expect( 19 );
        var date,
                inp = TestHelpers.datepicker.init('#inp'),
+               dp = $('#ui-datepicker-div'),
                lastYear = new Date(2007, 6 - 1, 4),
                nextYear = new Date(2009, 6 - 1, 4),
                minDate = new Date(2008, 2 - 1, 29),
@@ -404,6 +405,11 @@ test('minMax', function() {
        TestHelpers.datepicker.equalsDate(inp.datepicker('getDate'), new Date(2008, 6 - 1, 4), 'Min/max - setDate > min, < max');
        inp.datepicker('option', {maxDate: null}).val('01/04/2009').datepicker('option', {minDate: minDate, maxDate: maxDate});
        TestHelpers.datepicker.equalsDate(inp.datepicker('getDate'), maxDate, 'Min/max - setDate > max');
+
+       inp.datepicker('option', {yearRange: '-0:+1'}).val('01/01/' + new Date().getFullYear());
+       ok(dp.find(".ui-datepicker-prev").hasClass("ui-state-disabled"), "Year Range Test - previous button disabled at 1/1/minYear");
+       inp.datepicker("setDate", "12/30/" + new Date().getFullYear());
+       ok(dp.find(".ui-datepicker-next").hasClass("ui-state-disabled"), "Year Range Test - next button disabled at 12/30/maxYear");
 });
 
 test('setDate', function() {
index c7ecafffb261a7284a267aabe20b05dba1aeba59..e3c3bd39864d7429357586a75cb7422e8c3015ab 100644 (file)
@@ -1742,8 +1742,20 @@ $.extend(Datepicker.prototype, {
        _isInRange: function(inst, date) {
                var minDate = this._getMinMaxDate(inst, 'min');
                var maxDate = this._getMinMaxDate(inst, 'max');
+        var minYear = null;
+        var maxYear = null;
+        var years = this._get(inst, 'yearRange');
+        if (years){
+            var yearSplit = years.split(':');
+            var currentYear = new Date().getFullYear();
+            minYear = parseInt(yearSplit[0], 10) + currentYear;
+            maxYear = parseInt(yearSplit[1], 10) + currentYear;
+        }
+
                return ((!minDate || date.getTime() >= minDate.getTime()) &&
-                       (!maxDate || date.getTime() <= maxDate.getTime()));
+                       (!maxDate || date.getTime() <= maxDate.getTime()) &&
+            (!minYear || date.getFullYear() >= minYear) &&
+            (!maxYear || date.getFullYear() <= maxYear));
        },
 
        /* Provide the configuration settings for formatting/parsing. */