Browse Source

Merge pull request #1204 from kendaleiv/date-extensions

date.extensions: maxyear current or future fix
Robin Herbots 9 years ago
parent
commit
56f3f5cf3a
2 changed files with 93 additions and 1 deletions
  1. 8 1
      js/inputmask.date.extensions.js
  2. 85 0
      qunit/tests_date.js

+ 8 - 1
js/inputmask.date.extensions.js

@@ -107,7 +107,14 @@ Optional extensions on the jquery.inputmask base
 						var maxxYear = maxYearPrefix + maxYearPostfix;
 						var maxxYear = maxYearPrefix + maxYearPostfix;
 						return minyear > maxxYear ? minyear : maxxYear;
 						return minyear > maxxYear ? minyear : maxxYear;
 					}
 					}
-
+					if (minyear <= currentyear && currentyear <= maxyear) {
+						var currentYearPrefix = currentyear.toString().slice(0, 2);
+						while (maxyear < currentYearPrefix + hint) {
+							currentYearPrefix--;
+						}
+						var currentYearAndHint = currentYearPrefix + hint;
+						return currentYearAndHint < minyear ? minyear : currentYearAndHint;
+					}
 					return currentyear;
 					return currentyear;
 				},
 				},
 				onKeyDown: function(e, buffer, caretPos, opts) {
 				onKeyDown: function(e, buffer, caretPos, opts) {

+ 85 - 0
qunit/tests_date.js

@@ -304,4 +304,89 @@ define([
 
 
 
 
 	});
 	});
+
+	qunit.test("inputmask(\"dd/mm/yyyy\", { yearrange: { minyear: 1900, maxyear: 2016 } })", function(assert) {
+		var $fixture = $("#qunit-fixture");
+		$fixture.append('<input type="text" id="testmask" />');
+		var testmask = document.getElementById("testmask");
+		Inputmask("dd/mm/yyyy", {
+			yearrange: {
+				minyear: 1900,
+				maxyear: 2016
+			}
+		}).mask(testmask);
+
+		testmask.focus();
+
+		$("#testmask").Type("23373");
+		assert.equal(testmask.value, "23/03/1973", "Result " + testmask.value);
+	});
+
+	qunit.test("inputmask(\"dd/mm/yyyy\", { yearrange: { minyear: 1900, maxyear: 2017 } })", function(assert) {
+		var $fixture = $("#qunit-fixture");
+		$fixture.append('<input type="text" id="testmask" />');
+		var testmask = document.getElementById("testmask");
+		Inputmask("dd/mm/yyyy", {
+			yearrange: {
+				minyear: 1900,
+				maxyear: 2017
+			}
+		}).mask(testmask);
+
+		testmask.focus();
+
+		$("#testmask").Type("23373");
+		assert.equal(testmask.value, "23/03/1973", "Result " + testmask.value);
+	});
+
+	qunit.test("inputmask(\"dd/mm/yyyy\", { yearrange: { minyear: 1900, maxyear: 2018 } })", function(assert) {
+			var $fixture = $("#qunit-fixture");
+			$fixture.append('<input type="text" id="testmask" />');
+			var testmask = document.getElementById("testmask");
+			Inputmask("dd/mm/yyyy", {
+				yearrange: {
+					minyear: 1900,
+					maxyear: 2018
+				}
+			}).mask(testmask);
+
+			testmask.focus();
+
+			$("#testmask").Type("23373");
+			assert.equal(testmask.value, "23/03/1973", "Result " + testmask.value);
+	});
+
+	qunit.test("inputmask(\"dd/mm/yyyy\", { yearrange: { minyear: 1900, maxyear: 2019 } })", function(assert) {
+			var $fixture = $("#qunit-fixture");
+			$fixture.append('<input type="text" id="testmask" />');
+			var testmask = document.getElementById("testmask");
+			Inputmask("dd/mm/yyyy", {
+				yearrange: {
+					minyear: 1900,
+					maxyear: 2019
+				}
+			}).mask(testmask);
+
+			testmask.focus();
+
+			$("#testmask").Type("23373");
+			assert.equal(testmask.value, "23/03/1973", "Result " + testmask.value);
+	});
+
+	qunit.test("inputmask(\"dd/mm/yyyy\", { yearrange: { minyear: 1900, maxyear: 2018 } }) -- 2012", function(assert) {
+			var $fixture = $("#qunit-fixture");
+			$fixture.append('<input type="text" id="testmask" />');
+			var testmask = document.getElementById("testmask");
+			Inputmask("dd/mm/yyyy", {
+				yearrange: {
+					minyear: 1900,
+					maxyear: 2018
+				}
+			}).mask(testmask);
+
+			testmask.focus();
+
+			$("#testmask").Type("23312");
+			assert.equal(testmask.value, "23/03/2012", "Result " + testmask.value);
+	});
 });
 });