Skip to content

Commit 8f7c3e3

Browse files
committed
Datepicker: Handle when yearRange is a year or a modifier. Fixed #8994 - Datepicker: next and prev buttons are disabled when using yearRange
1 parent a63c091 commit 8f7c3e3

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

tests/unit/datepicker/datepicker_options.js

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ test("miscellaneous", function() {
384384
});
385385

386386
test("minMax", function() {
387-
expect( 19 );
387+
expect( 23 );
388388
var date,
389389
inp = TestHelpers.datepicker.init("#inp"),
390390
dp = $("#ui-datepicker-div"),
@@ -472,6 +472,22 @@ test("minMax", function() {
472472
ok(dp.find(".ui-datepicker-prev").hasClass("ui-state-disabled"), "Year Range Test - previous button disabled at 1/1/minYear");
473473
inp.datepicker("setDate", "12/30/" + new Date().getFullYear());
474474
ok(dp.find(".ui-datepicker-next").hasClass("ui-state-disabled"), "Year Range Test - next button disabled at 12/30/maxYear");
475+
476+
inp.datepicker("option", {
477+
minDate: new Date(1900, 0, 1),
478+
maxDate: "-6Y",
479+
yearRange: "1900:-6"
480+
}).val( "" );
481+
ok(dp.find(".ui-datepicker-next").hasClass("ui-state-disabled"), "Year Range Test - next button disabled");
482+
ok(!dp.find(".ui-datepicker-prev").hasClass("ui-state-disabled"), "Year Range Test - prev button enabled");
483+
484+
inp.datepicker("option", {
485+
minDate: new Date(1900, 0, 1),
486+
maxDate: "1/25/2007",
487+
yearRange: "1900:2007"
488+
}).val( "" );
489+
ok(dp.find(".ui-datepicker-next").hasClass("ui-state-disabled"), "Year Range Test - next button disabled");
490+
ok(!dp.find(".ui-datepicker-prev").hasClass("ui-state-disabled"), "Year Range Test - prev button enabled");
475491
});
476492

477493
test("setDate", function() {

ui/jquery.ui.datepicker.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1918,8 +1918,14 @@ $.extend(Datepicker.prototype, {
19181918
if (years){
19191919
yearSplit = years.split(":");
19201920
currentYear = new Date().getFullYear();
1921-
minYear = parseInt(yearSplit[0], 10) + currentYear;
1922-
maxYear = parseInt(yearSplit[1], 10) + currentYear;
1921+
minYear = parseInt(yearSplit[0], 10);
1922+
maxYear = parseInt(yearSplit[1], 10);
1923+
if ( yearSplit[0].match(/[+\-].*/) ) {
1924+
minYear += currentYear;
1925+
}
1926+
if ( yearSplit[1].match(/[+\-].*/) ) {
1927+
maxYear += currentYear;
1928+
}
19231929
}
19241930

19251931
return ((!minDate || date.getTime() >= minDate.getTime()) &&

0 commit comments

Comments
 (0)