浏览代码

Decimal mask excluding zero with custom RadixPoint and GroupSeparator fix #1418

Robin Herbots 9 年之前
父节点
当前提交
39693b7018

+ 2 - 1
CHANGELOG.md

@@ -5,9 +5,9 @@ All notable changes to this project will be documented in this file.
 ### Added
 - extra extension points: analyseMask
 - colorMask option ~ css styleable mask
-- jquery.loader.js => main in package.json
 
 ### Updates
+- remove h,s,d,m,y definitions => use the date/time aliases
 - phone-alias - fine-tune mask sorting
 - make data-inputmask attribute naming configurable (dataAttribute on Inputmask)
 - numeric alias move negation symbols to the edges
@@ -18,6 +18,7 @@ All notable changes to this project will be documented in this file.
 - improve inputfallback (Android support)
 
 ### Fixed
+- Decimal mask excluding zero with custom RadixPoint and GroupSeparator #1418
 - Can't remove dot from the middle of a word #1439
 - Invalid Leap Year dates can be entered #1368
 - jquery.val returns empty value (when using an unsupported input type) #1415

+ 9 - 2
bower.json

@@ -1,8 +1,15 @@
 {
   "name": "jquery.inputmask",
-  "version": "3.3.4-92",
+  "version": "3.3.4-100",
   "main": [
-	  "./dist/inputmask/inputmask.loader.js"
+	  "./dist/inputmask/inputmask.dependencyLib",
+	  "./dist/inputmask/inputmask",
+	  "./dist/inputmask/inputmask.extensions",
+	  "./dist/inputmask/inputmask.date.extensions",
+	  "./dist/inputmask/inputmask.numeric.extensions",
+	  "./dist/inputmask/inputmask.phone.extensions",
+	  "./dist/inputmask/inputmask.regex.extensions",
+	  "./dist/inputmask/jquery.inputmask"
   ],
   "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
   "description": "jquery.inputmask is a jquery plugin which create an input mask.",

+ 36 - 28
component.json

@@ -1,30 +1,38 @@
 {
-  "name": "jquery_inputmask",
-  "repository": "robinherbots/jquery.inputmask",
-  "description": "jquery.inputmask is a jquery plugin which create an input mask.",
-  "version": "3.3.4-92",
-  "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
-  "main": "./dist/inputmask/inputmask.loader.js",
-  "scripts": [
-    "./dist/inputmask/inputmask.dependencyLib.jquery.js",
-    "./dist/inputmask/inputmask.js",
-    "./dist/inputmask/inputmask.extensions.js",
-    "./dist/inputmask/inputmask.date.extensions.js",
-    "./dist/inputmask/inputmask.numeric.extensions.js",
-    "./dist/inputmask/inputmask.phone.extensions.js",
-    "./dist/inputmask/inputmask.regex.extensions.js",
-    "./dist/inputmask/jquery.inputmask.js",
-    "./dist/jquery.inputmask.bundle.js",
-    "./extra/dependencyLibs/inputmask.dependencyLib.jqlite.js",
-    "./extra/dependencyLibs/inputmask.dependencyLib.js",
-    "./extra/phone-codes/phone-be.js",
-    "./extra/phone-codes/phone-codes.js",
-    "./extra/phone-codes/phone-nl.js",
-    "./extra/phone-codes/phone-ru.js",
-    "./extra/phone-codes/phone-uk.js"
-  ],
-  "dependencies": {
-    "components/jquery": ">=1.7"
-  },
-  "license": "MIT"
+	"name": "jquery_inputmask",
+	"repository": "robinherbots/jquery.inputmask",
+	"description": "jquery.inputmask is a jquery plugin which create an input mask.",
+	"version": "3.3.4-100",
+	"keywords": [
+		"jquery",
+		"plugins",
+		"input",
+		"form",
+		"inputmask",
+		"mask"
+	],
+	"main": "./dist/jquery.inputmask.bundle.js",
+	"scripts": [
+		"./dist/inputmask/inputmask.dependencyLib.js",
+		"./dist/inputmask/inputmask.js",
+		"./dist/inputmask/inputmask.extensions.js",
+		"./dist/inputmask/inputmask.date.extensions.js",
+		"./dist/inputmask/inputmask.numeric.extensions.js",
+		"./dist/inputmask/inputmask.phone.extensions.js",
+		"./dist/inputmask/inputmask.regex.extensions.js",
+		"./dist/inputmask/jquery.inputmask.js",
+		"./dist/jquery.inputmask.bundle.js",
+		"./extra/dependencyLibs/inputmask.dependencyLib.jquery.js",
+		"./extra/dependencyLibs/inputmask.dependencyLib.jqlite.js",
+		"./extra/dependencyLibs/inputmask.dependencyLib.js",
+		"./extra/phone-codes/phone-be.js",
+		"./extra/phone-codes/phone-codes.js",
+		"./extra/phone-codes/phone-nl.js",
+		"./extra/phone-codes/phone-ru.js",
+		"./extra/phone-codes/phone-uk.js"
+	],
+	"dependencies": {
+		"components/jquery": ">=1.7"
+	},
+	"license": "MIT"
 }

+ 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.4-92",
+  "version": "3.3.4-100",
   "type": "library",
   "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
   "homepage": "http://robinherbots.github.io/jquery.inputmask",

+ 2 - 49
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.4-92
+* Version: 3.3.4-100
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);
@@ -11,54 +11,7 @@
     function isLeapYear(year) {
         return isNaN(year) || 29 === new Date(year, 2, 0).getDate();
     }
-    return Inputmask.extendDefinitions({
-        h: {
-            validator: "[01][0-9]|2[0-3]",
-            cardinality: 2,
-            prevalidator: [ {
-                validator: "[0-2]",
-                cardinality: 1
-            } ]
-        },
-        s: {
-            validator: "[0-5][0-9]",
-            cardinality: 2,
-            prevalidator: [ {
-                validator: "[0-5]",
-                cardinality: 1
-            } ]
-        },
-        d: {
-            validator: "0[1-9]|[12][0-9]|3[01]",
-            cardinality: 2,
-            prevalidator: [ {
-                validator: "[0-3]",
-                cardinality: 1
-            } ]
-        },
-        m: {
-            validator: "0[1-9]|1[012]",
-            cardinality: 2,
-            prevalidator: [ {
-                validator: "[01]",
-                cardinality: 1
-            } ]
-        },
-        y: {
-            validator: "(19|20)\\d{2}",
-            cardinality: 4,
-            prevalidator: [ {
-                validator: "[12]",
-                cardinality: 1
-            }, {
-                validator: "(19|20)",
-                cardinality: 2
-            }, {
-                validator: "(19|20)\\d",
-                cardinality: 3
-            } ]
-        }
-    }), Inputmask.extendAliases({
+    return Inputmask.extendAliases({
         "dd/mm/yyyy": {
             mask: "1/2/y",
             placeholder: "dd/mm/yyyy",

+ 1 - 1
dist/inputmask/inputmask.dependencyLib.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.4-92
+* Version: 3.3.4-100
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define("inputmask.dependencyLib", [ "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.4-92
+* Version: 3.3.4-100
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);

+ 2 - 2
dist/inputmask/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.4-92
+* Version: 3.3.4-100
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define("inputmask", [ "inputmask.dependencyLib" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib")) : factory(window.dependencyLib || jQuery);
@@ -232,7 +232,7 @@
                                         for (var ndx2 = 0; ndx2 < malternateMatches.length; ndx2++) {
                                             var altMatch2 = malternateMatches[ndx2];
                                             if (("string" != typeof altIndex || $.inArray(altMatch.locator[altMatch.alternation].toString(), altIndexArr) !== -1) && (altMatch.match.def === altMatch2.match.def || staticCanMatchDefinition(altMatch, altMatch2))) {
-                                                hasMatch = altMatch.match.nativeDef === altMatch2.match.nativeDef, altMatch2.locator[altMatch.alternation].toString().indexOf(altMatch.locator[altMatch.alternation]) === -1 && (altMatch2.locator[altMatch.alternation] = altMatch2.locator[altMatch.alternation] + "," + altMatch.locator[altMatch.alternation], 
+                                                hasMatch = altMatch.match.nativeDef === altMatch2.match.nativeDef, altMatch.alternation == altMatch2.alternation && altMatch2.locator[altMatch2.alternation].toString().indexOf(altMatch.locator[altMatch.alternation]) === -1 && (altMatch2.locator[altMatch2.alternation] = altMatch2.locator[altMatch2.alternation] + "," + altMatch.locator[altMatch.alternation], 
                                                 altMatch2.alternation = altMatch.alternation, null == altMatch.match.fn && (altMatch2.na = altMatch2.na || altMatch.locator[altMatch.alternation].toString(), 
                                                 altMatch2.na.indexOf(altMatch.locator[altMatch.alternation]) === -1 && (altMatch2.na = altMatch2.na + "," + altMatch.locator[altMatch.alternation])));
                                                 break;

文件差异内容过多而无法显示
+ 0 - 29
dist/inputmask/inputmask.loader.js


+ 9 - 7
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.4-92
+* Version: 3.3.4-100
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);
@@ -329,13 +329,15 @@
             },
             onBeforeMask: function(initialValue, opts) {
                 if (opts.numericInput === !0 && (initialValue = initialValue.split("").reverse().join("")), 
-                "" !== opts.radixPoint && isFinite(initialValue)) initialValue = initialValue.toString().replace(".", opts.radixPoint); else {
-                    var kommaMatches = initialValue.match(/,/g), dotMatches = initialValue.match(/\./g);
-                    dotMatches && kommaMatches ? dotMatches.length > kommaMatches.length ? (initialValue = initialValue.replace(/\./g, ""), 
-                    initialValue = initialValue.replace(",", opts.radixPoint)) : kommaMatches.length > dotMatches.length ? (initialValue = initialValue.replace(/,/g, ""), 
-                    initialValue = initialValue.replace(".", opts.radixPoint)) : initialValue = initialValue.indexOf(".") < initialValue.indexOf(",") ? initialValue.replace(/\./g, "") : initialValue = initialValue.replace(/,/g, "") : initialValue = initialValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), "");
+                "" !== opts.radixPoint && isFinite(initialValue)) {
+                    var vs = initialValue.split("."), groupSize = "" !== opts.groupSeparator ? parseInt(opts.groupSize) : 0;
+                    2 === vs.length && (vs[0].length > groupSize || vs[1].length > groupSize) && (initialValue = initialValue.toString().replace(".", opts.radixPoint));
                 }
-                if (0 === opts.digits && (initialValue.indexOf(".") !== -1 ? initialValue = initialValue.substring(0, initialValue.indexOf(".")) : initialValue.indexOf(",") !== -1 && (initialValue = initialValue.substring(0, initialValue.indexOf(",")))), 
+                var kommaMatches = initialValue.match(/,/g), dotMatches = initialValue.match(/\./g);
+                if (dotMatches && kommaMatches ? dotMatches.length > kommaMatches.length ? (initialValue = initialValue.replace(/\./g, ""), 
+                initialValue = initialValue.replace(",", opts.radixPoint)) : kommaMatches.length > dotMatches.length ? (initialValue = initialValue.replace(/,/g, ""), 
+                initialValue = initialValue.replace(".", opts.radixPoint)) : initialValue = initialValue.indexOf(".") < initialValue.indexOf(",") ? initialValue.replace(/\./g, "") : initialValue = initialValue.replace(/,/g, "") : initialValue = initialValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 
+                0 === opts.digits && (initialValue.indexOf(".") !== -1 ? initialValue = initialValue.substring(0, initialValue.indexOf(".")) : initialValue.indexOf(",") !== -1 && (initialValue = initialValue.substring(0, initialValue.indexOf(",")))), 
                 "" !== opts.radixPoint && isFinite(opts.digits) && initialValue.indexOf(opts.radixPoint) !== -1) {
                     var valueParts = initialValue.split(opts.radixPoint), decPart = valueParts[1].match(new RegExp("\\d*"))[0];
                     if (parseInt(opts.digits) < decPart.toString().length) {

+ 3 - 3
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.4-92
+* Version: 3.3.4-100
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);
@@ -28,9 +28,9 @@
             return mask += 1 === submasks.length ? submasks[0] : opts.groupmarker.start + submasks.join(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start) + opts.groupmarker.end;
         }
         var maskGroups = {};
-        opts.phoneCodes && opts.phoneCodes.length > 500 && (mask = mask.substr(1, mask.length - 2), 
+        opts.phoneCodes && opts.phoneCodes.length > 2e3 && (mask = mask.substr(1, mask.length - 2), 
         reduceVariations(mask.split(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start)), 
-        mask = rebuild(maskGroups)), console.log(mask);
+        mask = rebuild(maskGroups));
         var mt = analyseMaskBase.call(this, mask, opts);
         return mt;
     }, Inputmask.extendAliases({

+ 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.4-92
+* Version: 3.3.4-100
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib"), 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.4-92
+* Version: 3.3.4-100
 */
 !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);

+ 13 - 58
dist/jquery.inputmask.bundle.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.4-92
+* Version: 3.3.4-100
 */
 !function($) {
     function Inputmask(alias, options) {
@@ -230,7 +230,7 @@
                                         for (var ndx2 = 0; ndx2 < malternateMatches.length; ndx2++) {
                                             var altMatch2 = malternateMatches[ndx2];
                                             if (("string" != typeof altIndex || $.inArray(altMatch.locator[altMatch.alternation].toString(), altIndexArr) !== -1) && (altMatch.match.def === altMatch2.match.def || staticCanMatchDefinition(altMatch, altMatch2))) {
-                                                hasMatch = altMatch.match.nativeDef === altMatch2.match.nativeDef, altMatch2.locator[altMatch.alternation].toString().indexOf(altMatch.locator[altMatch.alternation]) === -1 && (altMatch2.locator[altMatch.alternation] = altMatch2.locator[altMatch.alternation] + "," + altMatch.locator[altMatch.alternation], 
+                                                hasMatch = altMatch.match.nativeDef === altMatch2.match.nativeDef, altMatch.alternation == altMatch2.alternation && altMatch2.locator[altMatch2.alternation].toString().indexOf(altMatch.locator[altMatch.alternation]) === -1 && (altMatch2.locator[altMatch2.alternation] = altMatch2.locator[altMatch2.alternation] + "," + altMatch.locator[altMatch.alternation], 
                                                 altMatch2.alternation = altMatch.alternation, null == altMatch.match.fn && (altMatch2.na = altMatch2.na || altMatch.locator[altMatch.alternation].toString(), 
                                                 altMatch2.na.indexOf(altMatch.locator[altMatch.alternation]) === -1 && (altMatch2.na = altMatch2.na + "," + altMatch.locator[altMatch.alternation])));
                                                 break;
@@ -1610,54 +1610,7 @@
     function isLeapYear(year) {
         return isNaN(year) || 29 === new Date(year, 2, 0).getDate();
     }
-    return Inputmask.extendDefinitions({
-        h: {
-            validator: "[01][0-9]|2[0-3]",
-            cardinality: 2,
-            prevalidator: [ {
-                validator: "[0-2]",
-                cardinality: 1
-            } ]
-        },
-        s: {
-            validator: "[0-5][0-9]",
-            cardinality: 2,
-            prevalidator: [ {
-                validator: "[0-5]",
-                cardinality: 1
-            } ]
-        },
-        d: {
-            validator: "0[1-9]|[12][0-9]|3[01]",
-            cardinality: 2,
-            prevalidator: [ {
-                validator: "[0-3]",
-                cardinality: 1
-            } ]
-        },
-        m: {
-            validator: "0[1-9]|1[012]",
-            cardinality: 2,
-            prevalidator: [ {
-                validator: "[01]",
-                cardinality: 1
-            } ]
-        },
-        y: {
-            validator: "(19|20)\\d{2}",
-            cardinality: 4,
-            prevalidator: [ {
-                validator: "[12]",
-                cardinality: 1
-            }, {
-                validator: "(19|20)",
-                cardinality: 2
-            }, {
-                validator: "(19|20)\\d",
-                cardinality: 3
-            } ]
-        }
-    }), Inputmask.extendAliases({
+    return Inputmask.extendAliases({
         "dd/mm/yyyy": {
             mask: "1/2/y",
             placeholder: "dd/mm/yyyy",
@@ -2508,13 +2461,15 @@
             },
             onBeforeMask: function(initialValue, opts) {
                 if (opts.numericInput === !0 && (initialValue = initialValue.split("").reverse().join("")), 
-                "" !== opts.radixPoint && isFinite(initialValue)) initialValue = initialValue.toString().replace(".", opts.radixPoint); else {
-                    var kommaMatches = initialValue.match(/,/g), dotMatches = initialValue.match(/\./g);
-                    dotMatches && kommaMatches ? dotMatches.length > kommaMatches.length ? (initialValue = initialValue.replace(/\./g, ""), 
-                    initialValue = initialValue.replace(",", opts.radixPoint)) : kommaMatches.length > dotMatches.length ? (initialValue = initialValue.replace(/,/g, ""), 
-                    initialValue = initialValue.replace(".", opts.radixPoint)) : initialValue = initialValue.indexOf(".") < initialValue.indexOf(",") ? initialValue.replace(/\./g, "") : initialValue = initialValue.replace(/,/g, "") : initialValue = initialValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), "");
+                "" !== opts.radixPoint && isFinite(initialValue)) {
+                    var vs = initialValue.split("."), groupSize = "" !== opts.groupSeparator ? parseInt(opts.groupSize) : 0;
+                    2 === vs.length && (vs[0].length > groupSize || vs[1].length > groupSize) && (initialValue = initialValue.toString().replace(".", opts.radixPoint));
                 }
-                if (0 === opts.digits && (initialValue.indexOf(".") !== -1 ? initialValue = initialValue.substring(0, initialValue.indexOf(".")) : initialValue.indexOf(",") !== -1 && (initialValue = initialValue.substring(0, initialValue.indexOf(",")))), 
+                var kommaMatches = initialValue.match(/,/g), dotMatches = initialValue.match(/\./g);
+                if (dotMatches && kommaMatches ? dotMatches.length > kommaMatches.length ? (initialValue = initialValue.replace(/\./g, ""), 
+                initialValue = initialValue.replace(",", opts.radixPoint)) : kommaMatches.length > dotMatches.length ? (initialValue = initialValue.replace(/,/g, ""), 
+                initialValue = initialValue.replace(".", opts.radixPoint)) : initialValue = initialValue.indexOf(".") < initialValue.indexOf(",") ? initialValue.replace(/\./g, "") : initialValue = initialValue.replace(/,/g, "") : initialValue = initialValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 
+                0 === opts.digits && (initialValue.indexOf(".") !== -1 ? initialValue = initialValue.substring(0, initialValue.indexOf(".")) : initialValue.indexOf(",") !== -1 && (initialValue = initialValue.substring(0, initialValue.indexOf(",")))), 
                 "" !== opts.radixPoint && isFinite(opts.digits) && initialValue.indexOf(opts.radixPoint) !== -1) {
                     var valueParts = initialValue.split(opts.radixPoint), decPart = valueParts[1].match(new RegExp("\\d*"))[0];
                     if (parseInt(opts.digits) < decPart.toString().length) {
@@ -2595,9 +2550,9 @@
             return mask += 1 === submasks.length ? submasks[0] : opts.groupmarker.start + submasks.join(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start) + opts.groupmarker.end;
         }
         var maskGroups = {};
-        opts.phoneCodes && opts.phoneCodes.length > 500 && (mask = mask.substr(1, mask.length - 2), 
+        opts.phoneCodes && opts.phoneCodes.length > 2e3 && (mask = mask.substr(1, mask.length - 2), 
         reduceVariations(mask.split(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start)), 
-        mask = rebuild(maskGroups)), console.log(mask);
+        mask = rebuild(maskGroups));
         var mt = analyseMaskBase.call(this, mask, opts);
         return mt;
     }, Inputmask.extendAliases({

文件差异内容过多而无法显示
+ 2 - 2
dist/min/inputmask/inputmask.date.extensions.min.js


+ 1 - 1
dist/min/inputmask/inputmask.dependencyLib.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.4-92
+* Version: 3.3.4-100
 */
 !function(a){"function"==typeof define&&define.amd?define("inputmask.dependencyLib",["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return window.dependencyLib=a,a});

文件差异内容过多而无法显示
+ 1 - 1
dist/min/inputmask/inputmask.extensions.min.js


文件差异内容过多而无法显示
+ 0 - 8
dist/min/inputmask/inputmask.loader.min.js


文件差异内容过多而无法显示
+ 2 - 2
dist/min/inputmask/inputmask.min.js


文件差异内容过多而无法显示
+ 2 - 2
dist/min/inputmask/inputmask.numeric.extensions.min.js


文件差异内容过多而无法显示
+ 2 - 2
dist/min/inputmask/inputmask.phone.extensions.min.js


文件差异内容过多而无法显示
+ 1 - 1
dist/min/inputmask/inputmask.regex.extensions.min.js


文件差异内容过多而无法显示
+ 1 - 1
dist/min/inputmask/jquery.inputmask.min.js


文件差异内容过多而无法显示
+ 4 - 4
dist/min/jquery.inputmask.bundle.min.js


+ 2 - 1
extra/phone-codes/phone.js

@@ -127,7 +127,8 @@
 				{ "mask": "+592-###-####", "cc": "GY", "cd": "Guyana", "desc_en": "", "name_ru": "Гайана", "desc_ru": "" },
 				{ "mask": "+852-####-####", "cc": "HK", "cd": "Hong Kong", "desc_en": "", "name_ru": "Гонконг", "desc_ru": "" },
 				{ "mask": "+504-####-####", "cc": "HN", "cd": "Honduras", "desc_en": "", "name_ru": "Гондурас", "desc_ru": "" },
-				{ "mask": "+385-(##)-###-###[#]", "cc": "HR", "cd": "Croatia", "desc_en": "", "name_ru": "Хорватия", "desc_ru": "" },
+				{ "mask": "+385-(##)-###-###", "cc": "HR", "cd": "Croatia", "desc_en": "", "name_ru": "Хорватия", "desc_ru": "" },
+				{ "mask": "+385-(##)-###-####", "cc": "HR", "cd": "Croatia", "desc_en": "", "name_ru": "Хорватия", "desc_ru": "" },
 				{ "mask": "+385-1-####-###", "cc": "HR", "cd": "Croatia", "desc_en": "", "name_ru": "Хорватия", "desc_ru": "" },
 				{ "mask": "+509-##-##-####", "cc": "HT", "cd": "Haiti", "desc_en": "", "name_ru": "Гаити", "desc_ru": "" },
 				{ "mask": "+36(###)###-###", "cc": "HU", "cd": "Hungary", "desc_en": "", "name_ru": "Венгрия", "desc_ru": "" },

+ 8 - 0
index.js

@@ -0,0 +1,8 @@
+require("./dist/inputmask/inputmask.dependencyLib");
+module.exports = require("./dist/inputmask/inputmask");
+require("./dist/inputmask/inputmask.extensions");
+require("./dist/inputmask/inputmask.date.extensions");
+require("./dist/inputmask/inputmask.numeric.extensions");
+require("./dist/inputmask/inputmask.phone.extensions");
+require("./dist/inputmask/inputmask.regex.extensions");
+require("./dist/inputmask/jquery.inputmask");

+ 0 - 49
js/inputmask.date.extensions.js

@@ -21,55 +21,6 @@
 		return isNaN(year) || new Date(year, 2, 0).getDate() === 29;
 	}
 
-	//date & time aliases
-	Inputmask.extendDefinitions({
-		"h": { //hours
-			validator: "[01][0-9]|2[0-3]",
-			cardinality: 2,
-			prevalidator: [{
-				validator: "[0-2]",
-				cardinality: 1
-			}]
-		},
-		"s": { //seconds || minutes
-			validator: "[0-5][0-9]",
-			cardinality: 2,
-			prevalidator: [{
-				validator: "[0-5]",
-				cardinality: 1
-			}]
-		},
-		"d": { //basic day
-			validator: "0[1-9]|[12][0-9]|3[01]",
-			cardinality: 2,
-			prevalidator: [{
-				validator: "[0-3]",
-				cardinality: 1
-			}]
-		},
-		"m": { //basic month
-			validator: "0[1-9]|1[012]",
-			cardinality: 2,
-			prevalidator: [{
-				validator: "[01]",
-				cardinality: 1
-			}]
-		},
-		"y": { //basic year
-			validator: "(19|20)\\d{2}",
-			cardinality: 4,
-			prevalidator: [{
-				validator: "[12]",
-				cardinality: 1
-			}, {
-				validator: "(19|20)",
-				cardinality: 2
-			}, {
-				validator: "(19|20)\\d",
-				cardinality: 3
-			}]
-		}
-	});
 	Inputmask.extendAliases({
 		"dd/mm/yyyy": {
 			mask: "1/2/y",

+ 6 - 2
js/inputmask.js

@@ -1031,8 +1031,12 @@
 											if (typeof altIndex !== "string" || $.inArray(altMatch.locator[altMatch.alternation].toString(), altIndexArr) !== -1) {
 												if (altMatch.match.def === altMatch2.match.def || staticCanMatchDefinition(altMatch, altMatch2)) {
 													hasMatch = altMatch.match.nativeDef === altMatch2.match.nativeDef;
-													if (altMatch2.locator[altMatch.alternation].toString().indexOf(altMatch.locator[altMatch.alternation]) === -1) {
-														altMatch2.locator[altMatch.alternation] = altMatch2.locator[altMatch.alternation] + "," + altMatch.locator[altMatch.alternation];
+													// if (altMatch.alternation != altMatch2.alternation){
+													// 	console.log("alternation mismatch");
+													// }
+													if (altMatch.alternation == altMatch2.alternation && //can we merge if the alternation is different??  TODO TOCHECK INVESTIGATE
+														altMatch2.locator[altMatch2.alternation].toString().indexOf(altMatch.locator[altMatch.alternation]) === -1) {
+														altMatch2.locator[altMatch2.alternation] = altMatch2.locator[altMatch2.alternation] + "," + altMatch.locator[altMatch.alternation];
 														altMatch2.alternation = altMatch.alternation; //we pass the alternation index => used in determineLastRequiredPosition
 														if (altMatch.match.fn == null) { //staticCanMatchDefinition => set no alternate on match
 															altMatch2.na = altMatch2.na || altMatch.locator[altMatch.alternation].toString();

+ 0 - 46
js/inputmask.loader.js

@@ -1,46 +0,0 @@
-(function (factory) {
-	if (typeof define === "function" && define.amd) {
-		define([
-			"./inputmask.dependencyLib",
-			"./inputmask",
-			"./inputmask.extensions",
-			"./inputmask.date.extensions",
-			"./inputmask.numeric.extensions",
-			"./inputmask.phone.extensions",
-			"./inputmask.regex.extensions",
-			"./jquery.inputmask"
-		], factory);
-	} else if (typeof exports === "object") {
-		module.exports = factory(
-			require("./inputmask.dependencyLib"),
-			require("./inputmask"),
-			require("./inputmask.extensions"),
-			require("./inputmask.date.extensions"),
-			require("./inputmask.numeric.extensions"),
-			require("./inputmask.phone.extensions"),
-			require("./inputmask.regex.extensions"),
-			require("./jquery.inputmask")
-		);
-	} else {
-		window.InputmaskLoader = jQuery.Deferred();
-		jQuery.getScript("./js/inputmask.dependencyLib.js").done(function () {
-			jQuery.getScript("./js/inputmask.js").done(function () {
-				jQuery.getScript("./js/inputmask.extensions.js").done(function () {
-					jQuery.getScript("./js/inputmask.date.extensions.js").done(function () {
-						jQuery.getScript("./js/inputmask.numeric.extensions.js").done(function () {
-							jQuery.getScript("./js/inputmask.phone.extensions.js").done(function () {
-								jQuery.getScript("./js/inputmask.regex.extensions.js").done(function () {
-									jQuery.getScript("./js/jquery.inputmask.js").done(function () {
-										window.InputmaskLoader.resolve();
-									})
-								})
-							})
-						})
-					})
-				})
-			})
-		});
-	}
-}(function ($, Inputmask) {
-	return Inputmask;
-}));

+ 18 - 16
js/inputmask.numeric.extensions.js

@@ -611,23 +611,25 @@
 					initialValue = initialValue.split("").reverse().join("");
 				}
 				if (opts.radixPoint !== "" && isFinite(initialValue)) {
-					initialValue = initialValue.toString().replace(".", opts.radixPoint);
-				} else {
-					var kommaMatches = initialValue.match(/,/g);
-					var dotMatches = initialValue.match(/\./g);
-					if (dotMatches && kommaMatches) {
-						if (dotMatches.length > kommaMatches.length) {
-							initialValue = initialValue.replace(/\./g, "");
-							initialValue = initialValue.replace(",", opts.radixPoint);
-						} else if (kommaMatches.length > dotMatches.length) {
-							initialValue = initialValue.replace(/,/g, "");
-							initialValue = initialValue.replace(".", opts.radixPoint);
-						} else { //equal
-							initialValue = initialValue.indexOf(".") < initialValue.indexOf(",") ? initialValue.replace(/\./g, "") : initialValue = initialValue.replace(/,/g, "");
-						}
-					} else {
-						initialValue = initialValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), "");
+					var vs = initialValue.split("."),
+						groupSize = opts.groupSeparator !== "" ? parseInt(opts.groupSize) : 0;
+					if (vs.length === 2 && (vs[0].length > groupSize || vs[1].length > groupSize))
+						initialValue = initialValue.toString().replace(".", opts.radixPoint);
+				}
+				var kommaMatches = initialValue.match(/,/g);
+				var dotMatches = initialValue.match(/\./g);
+				if (dotMatches && kommaMatches) {
+					if (dotMatches.length > kommaMatches.length) {
+						initialValue = initialValue.replace(/\./g, "");
+						initialValue = initialValue.replace(",", opts.radixPoint);
+					} else if (kommaMatches.length > dotMatches.length) {
+						initialValue = initialValue.replace(/,/g, "");
+						initialValue = initialValue.replace(".", opts.radixPoint);
+					} else { //equal
+						initialValue = initialValue.indexOf(".") < initialValue.indexOf(",") ? initialValue.replace(/\./g, "") : initialValue = initialValue.replace(/,/g, "");
 					}
+				} else {
+					initialValue = initialValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), "");
 				}
 
 				if (opts.digits === 0) {

+ 2 - 2
js/inputmask.phone.extensions.js

@@ -74,12 +74,12 @@
 		}
 
 
-		if (opts.phoneCodes && opts.phoneCodes.length > 500) {
+		if (opts.phoneCodes && opts.phoneCodes.length > 2000) {
 			mask = mask.substr(1, mask.length - 2);
 			reduceVariations(mask.split(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start));
 			mask = rebuild(maskGroups);
 		}
-		console.log(mask);
+		// console.log(mask);
 		var mt = analyseMaskBase.call(this, mask, opts);
 		return mt;
 	};

+ 63 - 62
package.json

@@ -1,64 +1,65 @@
 {
-  "name": "jquery.inputmask",
-  "version": "3.3.4-92",
-  "description": "jquery.inputmask is a jquery plugin which create an input mask.",
-  "main": "./dist/inputmask/inputmask.loader.js",
-  "files": [
-    "dist/inputmask/",
-    "extra/",
-    "dist/jquery.inputmask.bundle.js"
-  ],
-  "scripts": {
-    "test": "grunt validate"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/RobinHerbots/jquery.inputmask.git"
-  },
-  "keywords": [
-    "form",
-    "input",
-    "inputmask",
-    "jquery",
-    "jquery-plugin",
-    "mask",
-    "plugins"
-  ],
-  "author": {
-    "name": "Robin Herbots",
-    "url": "https://github.com/RobinHerbots"
-  },
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/RobinHerbots/jquery.inputmask/issues"
-  },
-  "homepage": "https://github.com/RobinHerbots/jquery.inputmask",
-  "devDependencies": {
-    "browserify": "^13.0.1",
-    "browserify-shim": "^3.8.11",
-    "grunt": "^1.0.1",
-    "grunt-available-tasks": "^0.6.0",
-    "grunt-browserify": "^5.0.0",
-    "grunt-bump": "^0.8.0",
-    "grunt-cli": "^1.2.0",
-    "grunt-contrib-clean": "^1.0.0",
-    "grunt-contrib-uglify": "^1.0.1",
-    "grunt-eslint": "^19.0.0",
-    "grunt-karma": "^2.0.0",
-    "grunt-nuget": "^0.1.5",
-    "grunt-release": "^0.14.0",
-    "grunt-shell": "^1.1.2",
-    "jqlite": "^0.2.25",
-    "karma": "^1.1.1",
-    "karma-chrome-launcher": "^1.0.1",
-    "karma-firefox-launcher": "^1.0.0",
-    "karma-ie-launcher": "^1.0.0",
-    "karma-phantomjs-launcher": "^1.0.0",
-    "karma-qunit": "^1.1.0",
-    "karma-requirejs": "^1.0.0",
-    "load-grunt-tasks": "^3.2.0",
-    "phantomjs-prebuilt": "^2.1.7",
-    "qunitjs": "^1.23.1",
-    "requirejs": "^2.1.20"
-  }
+	"name": "jquery.inputmask",
+	"version": "3.3.4-100",
+	"description": "jquery.inputmask is a jquery plugin which create an input mask.",
+	"main": "index.js",
+	"files": [
+		"dist/inputmask/",
+		"extra/",
+		"dist/jquery.inputmask.bundle.js",
+		"index.js"
+	],
+	"scripts": {
+		"test": "grunt validate"
+	},
+	"repository": {
+		"type": "git",
+		"url": "https://github.com/RobinHerbots/jquery.inputmask.git"
+	},
+	"keywords": [
+		"form",
+		"input",
+		"inputmask",
+		"jquery",
+		"jquery-plugin",
+		"mask",
+		"plugins"
+	],
+	"author": {
+		"name": "Robin Herbots",
+		"url": "https://github.com/RobinHerbots"
+	},
+	"license": "MIT",
+	"bugs": {
+		"url": "https://github.com/RobinHerbots/jquery.inputmask/issues"
+	},
+	"homepage": "https://github.com/RobinHerbots/jquery.inputmask",
+	"devDependencies": {
+		"browserify": "^13.0.1",
+		"browserify-shim": "^3.8.11",
+		"grunt": "^1.0.1",
+		"grunt-available-tasks": "^0.6.0",
+		"grunt-browserify": "^5.0.0",
+		"grunt-bump": "^0.8.0",
+		"grunt-cli": "^1.2.0",
+		"grunt-contrib-clean": "^1.0.0",
+		"grunt-contrib-uglify": "^1.0.1",
+		"grunt-eslint": "^19.0.0",
+		"grunt-karma": "^2.0.0",
+		"grunt-nuget": "^0.1.5",
+		"grunt-release": "^0.14.0",
+		"grunt-shell": "^1.1.2",
+		"jqlite": "^0.2.25",
+		"karma": "^1.1.1",
+		"karma-chrome-launcher": "^1.0.1",
+		"karma-firefox-launcher": "^1.0.0",
+		"karma-ie-launcher": "^1.0.0",
+		"karma-phantomjs-launcher": "^1.0.0",
+		"karma-qunit": "^1.1.0",
+		"karma-requirejs": "^1.0.0",
+		"load-grunt-tasks": "^3.2.0",
+		"phantomjs-prebuilt": "^2.1.7",
+		"qunitjs": "^1.23.1",
+		"requirejs": "^2.1.20"
+	}
 }

+ 3 - 3
qunit/main_phone.js

@@ -1,8 +1,8 @@
 define([
 	"qunit",
-	"tests_phone_world",
-	"tests_phonebe",
-	"tests_phonenl",
+	// "tests_phone_world",
+	// "tests_phonebe",
+	// "tests_phonenl",
 	"tests_phoneru"
 ], function(qunit) {
 	qunit.load();

+ 0 - 15
qunit/tests_base.js

@@ -223,21 +223,6 @@ define([
 		assert.equal(testmask.value, "abcde", "Result " + testmask.value);
 	});
 
-	qunit.test("inputmask(\"d/m/y\")", function (assert) {
-		var $fixture = $("#qunit-fixture");
-		$fixture.append('<input type="text" id="testmask" />');
-		var testmask = document.getElementById("testmask");
-		Inputmask("d/m/y").mask(testmask);
-
-		testmask.focus();
-
-		$("#testmask").Type("23031973");
-		$.caret(testmask, 5);
-		$("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
-
-		assert.equal(testmask.value, "23/0_/1973", "Result " + testmask.value);
-	});
-
 	qunit.test("inputmask(\"(999)999-9999\") - ruslanfedoseenko mask", function (assert) {
 		var $fixture = $("#qunit-fixture");
 		$fixture.append('<input type="text" id="testmask" />');