diff options
author | David Petersen <public@petersendidit.com> | 2013-01-23 13:41:01 -0600 |
---|---|---|
committer | David Petersen <public@petersendidit.com> | 2013-01-23 13:41:01 -0600 |
commit | 8f7c3e309cae07c75b930c55f14c05053d5028e9 (patch) | |
tree | dc3364979daecccdd5a004454691a48c8bcd27bf | |
parent | a63c0910a6ebcc45ae2c0af7a5ae0840d4eab903 (diff) | |
download | jquery-ui-8f7c3e309cae07c75b930c55f14c05053d5028e9.tar.gz jquery-ui-8f7c3e309cae07c75b930c55f14c05053d5028e9.zip |
Datepicker: Handle when yearRange is a year or a modifier. Fixed #8994 - Datepicker: next and prev buttons are disabled when using yearRange
-rw-r--r-- | tests/unit/datepicker/datepicker_options.js | 18 | ||||
-rw-r--r-- | ui/jquery.ui.datepicker.js | 10 |
2 files changed, 25 insertions, 3 deletions
diff --git a/tests/unit/datepicker/datepicker_options.js b/tests/unit/datepicker/datepicker_options.js index e47235786..dac2262dc 100644 --- a/tests/unit/datepicker/datepicker_options.js +++ b/tests/unit/datepicker/datepicker_options.js @@ -384,7 +384,7 @@ test("miscellaneous", function() { }); test("minMax", function() { - expect( 19 ); + expect( 23 ); var date, inp = TestHelpers.datepicker.init("#inp"), dp = $("#ui-datepicker-div"), @@ -472,6 +472,22 @@ test("minMax", function() { 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"); + + inp.datepicker("option", { + minDate: new Date(1900, 0, 1), + maxDate: "-6Y", + yearRange: "1900:-6" + }).val( "" ); + ok(dp.find(".ui-datepicker-next").hasClass("ui-state-disabled"), "Year Range Test - next button disabled"); + ok(!dp.find(".ui-datepicker-prev").hasClass("ui-state-disabled"), "Year Range Test - prev button enabled"); + + inp.datepicker("option", { + minDate: new Date(1900, 0, 1), + maxDate: "1/25/2007", + yearRange: "1900:2007" + }).val( "" ); + ok(dp.find(".ui-datepicker-next").hasClass("ui-state-disabled"), "Year Range Test - next button disabled"); + ok(!dp.find(".ui-datepicker-prev").hasClass("ui-state-disabled"), "Year Range Test - prev button enabled"); }); test("setDate", function() { diff --git a/ui/jquery.ui.datepicker.js b/ui/jquery.ui.datepicker.js index 24f0d5405..e93f596fc 100644 --- a/ui/jquery.ui.datepicker.js +++ b/ui/jquery.ui.datepicker.js @@ -1918,8 +1918,14 @@ $.extend(Datepicker.prototype, { if (years){ yearSplit = years.split(":"); currentYear = new Date().getFullYear(); - minYear = parseInt(yearSplit[0], 10) + currentYear; - maxYear = parseInt(yearSplit[1], 10) + currentYear; + minYear = parseInt(yearSplit[0], 10); + maxYear = parseInt(yearSplit[1], 10); + if ( yearSplit[0].match(/[+\-].*/) ) { + minYear += currentYear; + } + if ( yearSplit[1].match(/[+\-].*/) ) { + maxYear += currentYear; + } } return ((!minDate || date.getTime() >= minDate.getTime()) && |