Browse Source

extra fixes #644

Robin Herbots 10 years ago
parent
commit
763df94942

+ 1 - 1
bower.json

@@ -1,6 +1,6 @@
 {
   "name": "jquery.inputmask",
-  "version": "3.1.64-117",
+  "version": "3.1.64-118",
   "main": [
     "./dist/inputmask/jquery.inputmask.js",
     "./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.1.64-117",
+    "version": "3.1.64-118",
     "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.1.64-117",
+	"version": "3.1.64-118",
     "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 @@
 * http://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2015 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.1.64-117
+* Version: 3.1.64-118
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery", "./inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery"), require("./inputmask")) : factory(jQuery);

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


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

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

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


+ 3 - 3
dist/inputmask/inputmask.js

@@ -3,7 +3,7 @@
 * http://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2015 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.1.64-117
+* Version: 3.1.64-118
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery")) : factory(jQuery);
@@ -641,7 +641,7 @@
                         refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, result.buffer || buffer), 
                         resetMaskSet(!0), buffer = getBuffer();
                     }
-                    caretPos = result.caret || caretPos;
+                    caretPos = void 0 != result.caret ? result.caret : caretPos;
                 }
             }
             input._valueSet(buffer.join("")), void 0 != caretPos && caret(input, caretPos), 
@@ -707,7 +707,7 @@
         function caret(input, begin, end) {
             function TranslatePosition(pos) {
                 if (isRTL && "number" == typeof pos && (!opts.greedy || "" != opts.placeholder)) {
-                    var bffrLght = getBuffer().length;
+                    var bffrLght = getBuffer().join("").length;
                     pos = bffrLght - pos;
                 }
                 return pos;

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


+ 6 - 5
dist/inputmask/inputmask.numeric.extensions.js

@@ -3,7 +3,7 @@
 * http://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2015 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.1.64-117
+* Version: 3.1.64-118
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery", "./inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery"), require("./inputmask")) : factory(jQuery);
@@ -59,7 +59,7 @@
             autoUnmask: !1,
             unmaskAsNumber: !1,
             postFormat: function(buffer, pos, reformatOnly, opts) {
-                opts.numericInput === !0 && (buffer = buffer.reverse(), pos = buffer.length - 1 - pos);
+                opts.numericInput === !0 && (buffer = buffer.reverse(), isFinite(pos) && (pos = buffer.join("").length - pos - 1));
                 var suffixStripped = !1;
                 buffer.length >= opts.suffix.length && buffer.join("").indexOf(opts.suffix) == buffer.length - opts.suffix.length && (buffer.length = buffer.length - opts.suffix.length, 
                 suffixStripped = !0), pos = pos >= buffer.length ? buffer.length - 1 : pos < opts.prefix.length ? opts.prefix.length : pos;
@@ -88,7 +88,7 @@
                 if (-1 == newPos && charAtPos == opts.radixPoint && (newPos = $.inArray(opts.radixPoint, buffer)), 
                 reformatOnly ? buffer[newPos] = charAtPos : buffer.splice(newPos, 1), !needsRefresh && suffixStripped) for (var i = 0, l = opts.suffix.length; l > i; i++) buffer.push(opts.suffix.charAt(i));
                 return {
-                    pos: opts.numericInput ? buffer.length - 1 - newPos : newPos,
+                    pos: opts.numericInput && isFinite(pos) ? buffer.join("").length - newPos - 1 : newPos,
                     refreshFromBuffer: needsRefresh,
                     buffer: opts.numericInput === !0 ? buffer.reverse() : buffer
                 };
@@ -202,9 +202,9 @@
             },
             leadingZeroHandler: function(chrs, maskset, pos, strict, opts) {
                 if (1 == opts.numericInput) {
-                    if ("0" == maskset.buffer[maskset.buffer.length - 1]) return {
+                    if ("0" == maskset.buffer[maskset.buffer.length - opts.prefix.length - 1]) return {
                         pos: pos,
-                        remove: maskset.buffer.length - 1
+                        remove: maskset.buffer.length - opts.prefix.length - 1
                     };
                 } else {
                     var matchRslt = maskset.buffer.join("").match(opts.regex.integerNPart(opts)), radixPosition = $.inArray(opts.radixPoint, maskset.buffer);
@@ -357,6 +357,7 @@
                     }
                     var buffer = [];
                     for (var vp in maskset.validPositions) buffer.push(maskset.validPositions[vp].input);
+                    1 == opts.numericInput && (position = buffer.join("").length - position, buffer.reverse()), 
                     matchRslt = buffer.join("").match(opts.regex.integerNPart(opts));
                     var radixPosition = $.inArray(opts.radixPoint, maskset.buffer);
                     if (matchRslt && (-1 == radixPosition || radixPosition >= position)) if (0 == matchRslt[0].indexOf("0")) canClear = matchRslt.index != position || -1 == radixPosition; else {

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


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

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

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


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

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

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


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

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

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


+ 8 - 7
dist/jquery.inputmask.bundle.js

@@ -3,7 +3,7 @@
 * http://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2015 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.1.64-117
+* Version: 3.1.64-118
 */
 !function($) {
     function inputmask(options) {
@@ -639,7 +639,7 @@
                         refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, result.buffer || buffer), 
                         resetMaskSet(!0), buffer = getBuffer();
                     }
-                    caretPos = result.caret || caretPos;
+                    caretPos = void 0 != result.caret ? result.caret : caretPos;
                 }
             }
             input._valueSet(buffer.join("")), void 0 != caretPos && caret(input, caretPos), 
@@ -705,7 +705,7 @@
         function caret(input, begin, end) {
             function TranslatePosition(pos) {
                 if (isRTL && "number" == typeof pos && (!opts.greedy || "" != opts.placeholder)) {
-                    var bffrLght = getBuffer().length;
+                    var bffrLght = getBuffer().join("").length;
                     pos = bffrLght - pos;
                 }
                 return pos;
@@ -2040,7 +2040,7 @@
             autoUnmask: !1,
             unmaskAsNumber: !1,
             postFormat: function(buffer, pos, reformatOnly, opts) {
-                opts.numericInput === !0 && (buffer = buffer.reverse(), pos = buffer.length - 1 - pos);
+                opts.numericInput === !0 && (buffer = buffer.reverse(), isFinite(pos) && (pos = buffer.join("").length - pos - 1));
                 var suffixStripped = !1;
                 buffer.length >= opts.suffix.length && buffer.join("").indexOf(opts.suffix) == buffer.length - opts.suffix.length && (buffer.length = buffer.length - opts.suffix.length, 
                 suffixStripped = !0), pos = pos >= buffer.length ? buffer.length - 1 : pos < opts.prefix.length ? opts.prefix.length : pos;
@@ -2069,7 +2069,7 @@
                 if (-1 == newPos && charAtPos == opts.radixPoint && (newPos = $.inArray(opts.radixPoint, buffer)), 
                 reformatOnly ? buffer[newPos] = charAtPos : buffer.splice(newPos, 1), !needsRefresh && suffixStripped) for (var i = 0, l = opts.suffix.length; l > i; i++) buffer.push(opts.suffix.charAt(i));
                 return {
-                    pos: opts.numericInput ? buffer.length - 1 - newPos : newPos,
+                    pos: opts.numericInput && isFinite(pos) ? buffer.join("").length - newPos - 1 : newPos,
                     refreshFromBuffer: needsRefresh,
                     buffer: opts.numericInput === !0 ? buffer.reverse() : buffer
                 };
@@ -2183,9 +2183,9 @@
             },
             leadingZeroHandler: function(chrs, maskset, pos, strict, opts) {
                 if (1 == opts.numericInput) {
-                    if ("0" == maskset.buffer[maskset.buffer.length - 1]) return {
+                    if ("0" == maskset.buffer[maskset.buffer.length - opts.prefix.length - 1]) return {
                         pos: pos,
-                        remove: maskset.buffer.length - 1
+                        remove: maskset.buffer.length - opts.prefix.length - 1
                     };
                 } else {
                     var matchRslt = maskset.buffer.join("").match(opts.regex.integerNPart(opts)), radixPosition = $.inArray(opts.radixPoint, maskset.buffer);
@@ -2338,6 +2338,7 @@
                     }
                     var buffer = [];
                     for (var vp in maskset.validPositions) buffer.push(maskset.validPositions[vp].input);
+                    1 == opts.numericInput && (position = buffer.join("").length - position, buffer.reverse()), 
                     matchRslt = buffer.join("").match(opts.regex.integerNPart(opts));
                     var radixPosition = $.inArray(opts.radixPoint, maskset.buffer);
                     if (matchRslt && (-1 == radixPosition || radixPosition >= position)) if (0 == matchRslt[0].indexOf("0")) canClear = matchRslt.index != position || -1 == radixPosition; else {

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


+ 2 - 2
js/inputmask.js

@@ -1488,7 +1488,7 @@
 						resetMaskSet(true);
 						buffer = getBuffer();
 					}
-					caretPos = result.caret || caretPos;
+					caretPos = result.caret != undefined ? result.caret : caretPos;
 				}
 			}
 			input._valueSet(buffer.join(''));
@@ -1611,7 +1611,7 @@
 		function caret(input, begin, end) {
 			function TranslatePosition(pos) {
 				if (isRTL && typeof pos == 'number' && (!opts.greedy || opts.placeholder != "")) {
-					var bffrLght = getBuffer().length;
+					var bffrLght = getBuffer().join('').length; //join is needed because sometimes we get an empty buffer element which must not be counted for the caret position (numeric alias)
 					pos = bffrLght - pos;
 				}
 				return pos;

+ 9 - 5
js/inputmask.numeric.extensions.js

@@ -101,10 +101,10 @@ Optional extensions on the jquery.inputmask base
 			autoUnmask: false,
 			unmaskAsNumber: false,
 			postFormat: function(buffer, pos, reformatOnly, opts) { //this needs to be removed // this is crap
-				//console.log("input " + buffer);
 				if (opts.numericInput === true) {
 					buffer = buffer.reverse();
-					pos = buffer.length - 1 - pos;
+					if (isFinite(pos))
+						pos = buffer.join('').length - pos - 1;
 				}
 				var negationStrip = false;
 				var suffixStripped = false;
@@ -175,7 +175,7 @@ Optional extensions on the jquery.inputmask base
 				}
 				//console.log("formatted " + buffer + " refresh " + needsRefresh);
 				return {
-					pos: opts.numericInput ? buffer.length - 1 - newPos : newPos,
+					pos: (opts.numericInput && isFinite(pos)) ? buffer.join('').length - newPos - 1 : newPos,
 					"refreshFromBuffer": needsRefresh,
 					"buffer": opts.numericInput === true ? buffer.reverse() : buffer
 				};
@@ -341,10 +341,10 @@ Optional extensions on the jquery.inputmask base
 			},
 			leadingZeroHandler: function(chrs, maskset, pos, strict, opts) {
 				if (opts.numericInput == true) {
-					if (maskset.buffer[maskset.buffer.length - 1] == "0")
+					if (maskset.buffer[maskset.buffer.length - opts.prefix.length - 1] == "0")
 						return {
 							"pos": pos,
-							"remove": maskset.buffer.length - 1
+							"remove": maskset.buffer.length - opts.prefix.length - 1
 						};
 				} else {
 					var matchRslt = maskset.buffer.join('').match(opts.regex.integerNPart(opts)),
@@ -599,6 +599,10 @@ Optional extensions on the jquery.inputmask base
 					for (var vp in maskset.validPositions) {
 						buffer.push(maskset.validPositions[vp].input);
 					}
+					if (opts.numericInput == true) {
+						position = buffer.join('').length - position;
+						buffer.reverse();
+					}
 					matchRslt = buffer.join('').match(opts.regex.integerNPart(opts));
 					var radixPosition = $.inArray(opts.radixPoint, maskset.buffer);
 					if (matchRslt && (radixPosition == -1 || position <= radixPosition)) {

+ 1 - 1
package.json

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