Browse Source

getmasklength update

Robin Herbots 9 years ago
parent
commit
b497fbc414

File diff suppressed because it is too large
+ 1 - 1
README.md


+ 1 - 1
bower.json

@@ -1,6 +1,6 @@
 {
   "name": "jquery.inputmask",
-  "version": "3.3.1",
+  "version": "3.3.2-0",
   "main": [
     "./dist/inputmask/inputmask.js"
   ],

+ 1 - 1
component.json

@@ -2,7 +2,7 @@
   "name": "jquery_inputmask",
   "repository": "robinherbots/jquery.inputmask",
   "description": "jquery.inputmask is a jquery plugin which create an input mask.",
-  "version": "3.3.1",
+  "version": "3.3.2-0",
   "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
   "main": "./dist/jquery.inputmask.bundle.js",
   "scripts": [

+ 1 - 1
composer.json

@@ -1,7 +1,7 @@
 {
   "name": "robinherbots/jquery.inputmask",
   "description": "jquery.inputmask is a jquery plugin which create an input mask.",
-  "version": "3.3.1",
+  "version": "3.3.2-0",
   "type": "library",
   "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
   "homepage": "http://robinherbots.github.io/jquery.inputmask",

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

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.1
+* Version: 3.3.2-0
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);

+ 1 - 1
dist/inputmask/inputmask.dependencyLib.jquery.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.1
+* Version: 3.3.2-0
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery")) : factory(jQuery);

+ 1 - 1
dist/inputmask/inputmask.extensions.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.1
+* Version: 3.3.2-0
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);

File diff suppressed because it is too large
+ 24 - 26
dist/inputmask/inputmask.js


+ 1 - 1
dist/inputmask/inputmask.numeric.extensions.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.1
+* Version: 3.3.2-0
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);

+ 1 - 1
dist/inputmask/inputmask.phone.extensions.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.1
+* Version: 3.3.2-0
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);

+ 1 - 1
dist/inputmask/inputmask.regex.extensions.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.1
+* Version: 3.3.2-0
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);

+ 1 - 1
dist/inputmask/jquery.inputmask.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.1
+* Version: 3.3.2-0
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery"), require("./inputmask")) : factory(jQuery, window.Inputmask);

File diff suppressed because it is too large
+ 24 - 26
dist/jquery.inputmask.bundle.js


File diff suppressed because it is too large
+ 1 - 1
dist/min/inputmask/inputmask.date.extensions.min.js


+ 1 - 1
dist/min/inputmask/inputmask.dependencyLib.jquery.min.js

@@ -3,6 +3,6 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.1
+* Version: 3.3.2-0
 */
 !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return window.dependencyLib=a,a});

File diff suppressed because it is too large
+ 1 - 1
dist/min/inputmask/inputmask.extensions.min.js


File diff suppressed because it is too large
+ 3 - 3
dist/min/inputmask/inputmask.min.js


File diff suppressed because it is too large
+ 1 - 1
dist/min/inputmask/inputmask.numeric.extensions.min.js


File diff suppressed because it is too large
+ 1 - 1
dist/min/inputmask/inputmask.phone.extensions.min.js


File diff suppressed because it is too large
+ 1 - 1
dist/min/inputmask/inputmask.regex.extensions.min.js


File diff suppressed because it is too large
+ 1 - 1
dist/min/inputmask/jquery.inputmask.min.js


File diff suppressed because it is too large
+ 4 - 4
dist/min/jquery.inputmask.bundle.min.js


+ 47 - 8
js/inputmask.js

@@ -119,7 +119,8 @@
 			postValidation: null, //hook to postValidate the result from isValid.	Usefull for validating the entry as a whole.	args => buffer, currentResult, opts => return true/false
 			staticDefinitionSymbol: undefined, //specify a definitionSymbol for static content, used to make matches for alternators
 			jitMasking: false, //just in time masking ~ only mask while typing, can n (number), true or false
-			nullable: true //return nothing instead of the buffertemplate when nothing is returned.
+			nullable: true, //return nothing instead of the buffertemplate when nothing is returned.
+			inputEventOnly: false //testing inputfallback behavior
 		},
 		masksCache: {},
 		mask: function (elems) {
@@ -726,8 +727,8 @@
 	var ua = navigator.userAgent,
 		mobile = /mobile/i.test(ua),
 		iemobile = /iemobile/i.test(ua),
-		iphone = /iphone/i.test(ua) && !iemobile,
-		android = /android.*safari.*/i.test(ua) && !iemobile;
+		iphone = /iphone/i.test(ua) && !iemobile;
+	//android = /android.*safari.*/i.test(ua) && !iemobile;
 
 	//masking scope
 	//actionObj definition see below
@@ -917,7 +918,7 @@
 		function getTestTemplate(pos, ndxIntlzr, tstPs) {
 			var testPos = getMaskSet().validPositions[pos];
 			if (testPos === undefined) {
-				var testPositions = getTests(pos, ndxIntlzr, tstPs),
+				var testPositions = getTests(pos, ndxIntlzr ? ndxIntlzr.slice() : ndxIntlzr, tstPs),
 					lvp = getLastValidPosition(),
 					lvTest = getMaskSet().validPositions[lvp] || getTests(0)[0],
 					lvTestAltArr = (lvTest.alternation !== undefined) ? lvTest.locator[lvTest.alternation].toString().split(",") : [];
@@ -972,7 +973,7 @@
 		function getTests(pos, ndxIntlzr, tstPs) {
 			var maskTokens = getMaskSet().maskToken,
 				testPos = ndxIntlzr ? tstPs : 0,
-				ndxInitializer = ndxIntlzr || [0],
+				ndxInitializer = ndxIntlzr ? ndxIntlzr.slice() : [0],
 				matches = [],
 				insertStop = false,
 				latestMatch,
@@ -1097,6 +1098,7 @@
 												altLocArr = lmnt.locator[alternation].toString().split(",");
 											lmnt.locator[alternation] = undefined;
 											lmnt.alternation = undefined;
+
 											for (var alndx = 0; alndx < altLocArr.length; alndx++) {
 												mamatch = $.inArray(altLocArr[alndx], altIndexArr) !== -1;
 												if (mamatch) { //rebuild the locator with valid entries
@@ -1108,6 +1110,7 @@
 													lmnt.alternation = alternation;
 												}
 											}
+
 											if (lmnt.locator[alternation] !== undefined) return lmnt;
 										}
 									});
@@ -1185,6 +1188,31 @@
 				return locator;
 			}
 
+			function filterTests(tests) {
+				if (false && ndxIntlzr !== undefined) {
+					var temp = $.map(tests, function (test) {
+						var match = true;
+						for (var i = 0, ndxtl = tests.length, ndxil = ndxIntlzr ? ndxIntlzr.length : 0; i < ndxil; i++) {
+							if ((typeof test.locator[i] === "string" && !checkAlternationMatch(test.locator[i].split(","), ndxIntlzr[i].toString().split(","))) ||
+								(typeof test.locator[i] !== "string" && (test.locator[i] < ndxIntlzr[i] && (i !== ndxil - 1 || i !== ndxtl - 1 )))) {
+								match = false;
+								break;
+							}
+						}
+						if (match) {
+							return test;
+						}
+					});
+
+					if (temp.length == 0) {
+						console.log(JSON.stringify(tests));
+					}
+
+					return temp;
+				}
+				return tests;
+			}
+
 			if (pos > -1) {
 				if (ndxIntlzr === undefined) { //determine index initializer
 					var previousPos = pos - 1,
@@ -1199,7 +1227,15 @@
 					}
 				}
 				if (getMaskSet().tests[pos] && getMaskSet().tests[pos][0].cd === cacheDependency) { //cacheDependency is set on all tests, just check on the first
-					return getMaskSet().tests[pos];
+					//console.log("cache hit " + pos + " - " + ndxIntlzr);
+					return filterTests(getMaskSet().tests[pos]);
+				} else {
+					//console.log("cache mis " + pos + " - " + ndxIntlzr);
+					//if (ndxIntlzr !== undefined) { //initially faster load
+					//	testPos = ndxIntlzr ? tstPs : 0;
+					//	ndxInitializer = ndxIntlzr || [0];
+					//	cacheDependency = ndxIntlzr ? ndxIntlzr.join("") : "";
+					//}
 				}
 				for (var mtndx = ndxInitializer.shift(); mtndx < maskTokens.length; mtndx++) {
 					var match = resolveTestFromToken(maskTokens[mtndx], ndxInitializer, [mtndx]);
@@ -1221,6 +1257,7 @@
 					cd: cacheDependency
 				});
 			}
+
 			getMaskSet().tests[pos] = $.extend(true, [], matches); //set a clone to prevent overwriting some props
 			//console.log(pos + " - " + JSON.stringify(matches));
 			return getMaskSet().tests[pos];
@@ -2675,8 +2712,10 @@
 				EventRuler.on(el, "complete", opts.oncomplete);
 				EventRuler.on(el, "incomplete", opts.onincomplete);
 				EventRuler.on(el, "cleared", opts.oncleared);
-				EventRuler.on(el, "keydown", keydownEvent);
-				EventRuler.on(el, "keypress", keypressEvent);
+				if (opts.inputEventOnly !== true) {
+					EventRuler.on(el, "keydown", keydownEvent);
+					EventRuler.on(el, "keypress", keypressEvent);
+				}
 				EventRuler.on(el, "input", inputFallBackEvent);
 			}
 			EventRuler.on(el, "setvalue", setValueEvent);

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "jquery.inputmask",
-  "version": "3.3.1",
+  "version": "3.3.2-0",
   "description": "jquery.inputmask is a jquery plugin which create an input mask.",
   "main": "./dist/inputmask/jquery.inputmask.js",
   "files": [

+ 1 - 1
qunit/tests_multi.js

@@ -414,7 +414,7 @@ define([
 		}).mask(testmask);
 		testmask.focus();
 		$("#testmask").trigger("click");
-		assert.equal(testmask.inputmask._valueGet(), "+7(___)___-__-__", "Result " + testmask.inputmask._valueGet());
+		assert.equal(testmask.inputmask._valueGet(), "+_(___)___-__-__", "Result " + testmask.inputmask._valueGet());
 
 	});
 });