Browse Source

Edit New issue
git commit -m fix

Robin Herbots 10 years ago
parent
commit
d5bbca60b3

+ 1 - 0
CHANGELOG.md

@@ -20,6 +20,7 @@ All notable changes to this project will be documented in this file.
 - Update placeholder handling
 
 ### Fixed
+- Min value doesn't work with allowMinus #951
 - Escape value is inconsistent after mask #935
 - Escape optional marker, quantifiable marker, alternator marker and backslash not working #930
 - Is numeric carret position broken? #928

+ 1 - 1
bower.json

@@ -1,6 +1,6 @@
 {
   "name": "jquery.inputmask",
-  "version": "3.1.64-86",
+  "version": "3.1.64-91",
   "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-86",
+    "version": "3.1.64-91",
     "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-86",
+	"version": "3.1.64-91",
     "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-86
+* Version: 3.1.64-91
 */
 !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-86
+* Version: 3.1.64-91
 */
 !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


+ 18 - 10
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-86
+* Version: 3.1.64-91
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery")) : factory(jQuery);
@@ -564,8 +564,14 @@
             }), $.isFunction(opts.postValidation) && 0 != result && !strict) {
                 resetMaskSet(!0);
                 var postValidResult = opts.postValidation(getBuffer(), opts);
-                if (!postValidResult) return resetMaskSet(!0), getMaskSet().validPositions = $.extend(!0, {}, positionsClone), 
-                !1;
+                if (postValidResult) {
+                    if (postValidResult.refreshFromBuffer) {
+                        var refresh = postValidResult.refreshFromBuffer;
+                        refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, postValidResult.buffer), 
+                        resetMaskSet(!0), result = postValidResult;
+                    }
+                } else resetMaskSet(!0), getMaskSet().validPositions = $.extend(!0, {}, positionsClone), 
+                result = !1;
             }
             return result;
         }
@@ -611,7 +617,7 @@
                 if (result) {
                     if (result.refreshFromBuffer) {
                         var refresh = result.refreshFromBuffer;
-                        refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, result.buffer), 
+                        refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, result.buffer || buffer), 
                         resetMaskSet(!0), buffer = getBuffer();
                     }
                     caretPos = result.caret || caretPos;
@@ -658,9 +664,9 @@
             } else initialNdx = seekNext(initialNdx);
             $.each(inputValue, function(ndx, charCode) {
                 var keypress = $.Event("keypress");
-                keypress.which = charCode.charCodeAt(0), charCodes += charCode;
-                var lvp = getLastValidPosition(void 0, !0), lvTest = getMaskSet().validPositions[lvp], nextTest = getTestTemplate(lvp + 1, lvTest ? lvTest.locator.slice() : void 0, lvp);
-                if (!isTemplateMatch() || strict || opts.autoUnmask) {
+                if (keypress.which = charCode.charCodeAt(0), charCodes += charCode, lvp = getLastValidPosition(void 0, !0), 
+                lvTest = getMaskSet().validPositions[lvp], nextTest = getTestTemplate(lvp + 1, lvTest ? lvTest.locator.slice() : void 0, lvp), 
+                !isTemplateMatch() || strict || opts.autoUnmask) {
                     var pos = strict ? ndx : null == nextTest.match.fn && nextTest.match.optionality && lvp + 1 < getMaskSet().p ? lvp + 1 : getMaskSet().p;
                     keypressEvent.call(input, keypress, !0, !1, strict, pos), initialNdx = pos + 1, 
                     charCodes = "";
@@ -731,8 +737,10 @@
         function isComplete(buffer) {
             if ($.isFunction(opts.isComplete)) return opts.isComplete.call($el, buffer, opts);
             if ("*" == opts.repeat) return void 0;
-            var complete = !1, lrp = determineLastRequiredPosition(!0), aml = seekPrevious(lrp.l);
-            getLastValidPosition();
+            {
+                var complete = !1, lrp = determineLastRequiredPosition(!0), aml = seekPrevious(lrp.l);
+                getLastValidPosition();
+            }
             if (void 0 == lrp.def || lrp.def.newBlockMarker || lrp.def.optionality || lrp.def.optionalQuantifier) {
                 complete = !0;
                 for (var i = 0; aml >= i; i++) {
@@ -950,7 +958,7 @@
                         resetMaskSet(!0), result.caret && (getMaskSet().p = result.caret);
                     }
                 }
-                e.preventDefault();
+                if (e.preventDefault(), checkval) return valResult;
             }
         }
         function pasteEvent(e) {

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


+ 8 - 3
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-86
+* Version: 3.1.64-91
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery", "./inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery"), require("./inputmask")) : factory(jQuery);
@@ -217,8 +217,13 @@
                 "," === opts.radixPoint && (processValue = processValue.replace(inputmask.escapeRegex(opts.radixPoint), ".")), 
                 processValue = processValue.replace(new RegExp("^" + inputmask.escapeRegex(opts.negationSymbol.front)), "-"), 
                 processValue = processValue.replace(new RegExp(inputmask.escapeRegex(opts.negationSymbol.back) + "$"), ""), 
-                isFinite(processValue) && isFinite(opts.max) && (isValid = parseFloat(processValue) <= parseFloat(opts.max)), 
-                isValid;
+                processValue = processValue == opts.negationSymbol.front ? processValue + "0" : processValue, 
+                isFinite(processValue) && (isFinite(opts.max) && (isValid = parseFloat(processValue) <= parseFloat(opts.max)), 
+                isValid && isFinite(opts.min) && (0 >= processValue || processValue.toString().length >= opts.min.toString().length) && (isValid = parseFloat(processValue) >= parseFloat(opts.min), 
+                isValid || (isValid = $.extend(!0, {
+                    refreshFromBuffer: !0,
+                    buffer: (opts.prefix + opts.min).split("")
+                }, opts.postFormat((opts.prefix + opts.min).split(""), 0, !0, opts))))), isValid;
             },
             definitions: {
                 "~": {

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-86
+* Version: 3.1.64-91
 */
 !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-86
+* Version: 3.1.64-91
 */
 !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-86
+* Version: 3.1.64-91
 */
 !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


+ 25 - 12
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-86
+* Version: 3.1.64-91
 */
 !function($) {
     function inputmask(options) {
@@ -562,8 +562,14 @@
             }), $.isFunction(opts.postValidation) && 0 != result && !strict) {
                 resetMaskSet(!0);
                 var postValidResult = opts.postValidation(getBuffer(), opts);
-                if (!postValidResult) return resetMaskSet(!0), getMaskSet().validPositions = $.extend(!0, {}, positionsClone), 
-                !1;
+                if (postValidResult) {
+                    if (postValidResult.refreshFromBuffer) {
+                        var refresh = postValidResult.refreshFromBuffer;
+                        refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, postValidResult.buffer), 
+                        resetMaskSet(!0), result = postValidResult;
+                    }
+                } else resetMaskSet(!0), getMaskSet().validPositions = $.extend(!0, {}, positionsClone), 
+                result = !1;
             }
             return result;
         }
@@ -609,7 +615,7 @@
                 if (result) {
                     if (result.refreshFromBuffer) {
                         var refresh = result.refreshFromBuffer;
-                        refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, result.buffer), 
+                        refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, result.buffer || buffer), 
                         resetMaskSet(!0), buffer = getBuffer();
                     }
                     caretPos = result.caret || caretPos;
@@ -656,9 +662,9 @@
             } else initialNdx = seekNext(initialNdx);
             $.each(inputValue, function(ndx, charCode) {
                 var keypress = $.Event("keypress");
-                keypress.which = charCode.charCodeAt(0), charCodes += charCode;
-                var lvp = getLastValidPosition(void 0, !0), lvTest = getMaskSet().validPositions[lvp], nextTest = getTestTemplate(lvp + 1, lvTest ? lvTest.locator.slice() : void 0, lvp);
-                if (!isTemplateMatch() || strict || opts.autoUnmask) {
+                if (keypress.which = charCode.charCodeAt(0), charCodes += charCode, lvp = getLastValidPosition(void 0, !0), 
+                lvTest = getMaskSet().validPositions[lvp], nextTest = getTestTemplate(lvp + 1, lvTest ? lvTest.locator.slice() : void 0, lvp), 
+                !isTemplateMatch() || strict || opts.autoUnmask) {
                     var pos = strict ? ndx : null == nextTest.match.fn && nextTest.match.optionality && lvp + 1 < getMaskSet().p ? lvp + 1 : getMaskSet().p;
                     keypressEvent.call(input, keypress, !0, !1, strict, pos), initialNdx = pos + 1, 
                     charCodes = "";
@@ -729,8 +735,10 @@
         function isComplete(buffer) {
             if ($.isFunction(opts.isComplete)) return opts.isComplete.call($el, buffer, opts);
             if ("*" == opts.repeat) return void 0;
-            var complete = !1, lrp = determineLastRequiredPosition(!0), aml = seekPrevious(lrp.l);
-            getLastValidPosition();
+            {
+                var complete = !1, lrp = determineLastRequiredPosition(!0), aml = seekPrevious(lrp.l);
+                getLastValidPosition();
+            }
             if (void 0 == lrp.def || lrp.def.newBlockMarker || lrp.def.optionality || lrp.def.optionalQuantifier) {
                 complete = !0;
                 for (var i = 0; aml >= i; i++) {
@@ -948,7 +956,7 @@
                         resetMaskSet(!0), result.caret && (getMaskSet().p = result.caret);
                     }
                 }
-                e.preventDefault();
+                if (e.preventDefault(), checkval) return valResult;
             }
         }
         function pasteEvent(e) {
@@ -2182,8 +2190,13 @@
                 "," === opts.radixPoint && (processValue = processValue.replace(inputmask.escapeRegex(opts.radixPoint), ".")), 
                 processValue = processValue.replace(new RegExp("^" + inputmask.escapeRegex(opts.negationSymbol.front)), "-"), 
                 processValue = processValue.replace(new RegExp(inputmask.escapeRegex(opts.negationSymbol.back) + "$"), ""), 
-                isFinite(processValue) && isFinite(opts.max) && (isValid = parseFloat(processValue) <= parseFloat(opts.max)), 
-                isValid;
+                processValue = processValue == opts.negationSymbol.front ? processValue + "0" : processValue, 
+                isFinite(processValue) && (isFinite(opts.max) && (isValid = parseFloat(processValue) <= parseFloat(opts.max)), 
+                isValid && isFinite(opts.min) && (0 >= processValue || processValue.toString().length >= opts.min.toString().length) && (isValid = parseFloat(processValue) >= parseFloat(opts.min), 
+                isValid || (isValid = $.extend(!0, {
+                    refreshFromBuffer: !0,
+                    buffer: (opts.prefix + opts.min).split("")
+                }, opts.postFormat((opts.prefix + opts.min).split(""), 0, !0, opts))))), isValid;
             },
             definitions: {
                 "~": {

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


+ 13 - 20
js/inputmask.js

@@ -1389,7 +1389,12 @@
 				if (!postValidResult) {
 					resetMaskSet(true);
 					getMaskSet()["validPositions"] = $.extend(true, {}, positionsClone); //revert validation changes
-					return false;
+					result = false;
+				} else if (postValidResult["refreshFromBuffer"]) {
+					var refresh = postValidResult["refreshFromBuffer"];
+					refreshFromBuffer(refresh === true ? refresh : refresh["start"], refresh["end"], postValidResult["buffer"]);
+					resetMaskSet(true);
+					result = postValidResult;
 				}
 			}
 
@@ -1459,8 +1464,7 @@
 				if (result) {
 					if (result["refreshFromBuffer"]) {
 						var refresh = result["refreshFromBuffer"];
-						refreshFromBuffer(refresh === true ? refresh : refresh["start"], refresh["end"], result["buffer"]);
-
+						refreshFromBuffer(refresh === true ? refresh : refresh["start"], refresh["end"], result["buffer"] || buffer);
 						resetMaskSet(true);
 						buffer = getBuffer();
 					}
@@ -1546,8 +1550,8 @@
 			$.each(inputValue, function(ndx, charCode) {
 				var keypress = $.Event("keypress");
 				keypress.which = charCode.charCodeAt(0);
-				charCodes += charCode;
-				var lvp = getLastValidPosition(undefined, true),
+				charCodes += charCode,
+					lvp = getLastValidPosition(undefined, true),
 					lvTest = getMaskSet()["validPositions"][lvp],
 					nextTest = getTestTemplate(lvp + 1, lvTest ? lvTest.locator.slice() : undefined, lvp);
 				if (!isTemplateMatch() || strict || opts.autoUnmask) {
@@ -1558,7 +1562,6 @@
 				} else {
 					keypressEvent.call(input, keypress, true, false, true, lvp + 1);
 				}
-
 			});
 			if (writeOut) {
 				writeBuffer(input, getBuffer(), $(input).is(":focus") ? seekNext(getLastValidPosition(0)) : undefined, $.Event("checkval"));
@@ -1973,19 +1976,6 @@
 				}
 			}
 		}
-		//postprocessing of the validpositions according to the buffer manipulations
-		function handleOnKeyResult(input, keyResult, caretPos) {
-			if (keyResult && keyResult["refreshFromBuffer"]) {
-				var refresh = keyResult["refreshFromBuffer"];
-				refreshFromBuffer(refresh === true ? refresh : refresh["start"], refresh["end"], keyResult["buffer"]);
-
-				resetMaskSet(true);
-				if (caretPos != undefined) {
-					writeBuffer(input, getBuffer());
-					caret(input, keyResult.caret || caretPos.begin, keyResult.caret || caretPos.end);
-				}
-			}
-		}
 
 		function keydownEvent(e) {
 			var input = this,
@@ -2121,7 +2111,6 @@
 						if (result && result["refreshFromBuffer"]) {
 							var refresh = result["refreshFromBuffer"];
 							refreshFromBuffer(refresh === true ? refresh : refresh["start"], refresh["end"], result["buffer"]);
-
 							resetMaskSet(true);
 							if (result.caret) {
 								getMaskSet()["p"] = result.caret;
@@ -2129,6 +2118,10 @@
 						}
 					}
 					e.preventDefault();
+
+					if (checkval) {
+						return valResult;
+					}
 				}
 			}
 		}

+ 10 - 4
js/inputmask.numeric.extensions.js

@@ -366,15 +366,21 @@ Optional extensions on the jquery.inputmask base
 				//handle negation symbol
 				processValue = processValue.replace(new RegExp("^" + inputmask.escapeRegex(opts.negationSymbol.front)), "-");
 				processValue = processValue.replace(new RegExp(inputmask.escapeRegex(opts.negationSymbol.back) + "$"), "");
-
+				processValue = processValue == opts.negationSymbol.front ? processValue + "0" : processValue;
 
 				if (isFinite(processValue)) {
 					if (isFinite(opts.max)) {
 						isValid = parseFloat(processValue) <= parseFloat(opts.max);
 					}
-					// if (isValid && isFinite(opts.min)) {
-					// 	isValid = parseFloat(processValue) >= parseFloat(opts.min);
-					// }
+					if (isValid && isFinite(opts.min) && (processValue <= 0 || processValue.toString().length >= opts.min.toString().length)) {
+						isValid = parseFloat(processValue) >= parseFloat(opts.min);
+						if (!isValid) {
+							isValid = $.extend(true, {
+								"refreshFromBuffer": true,
+								"buffer": (opts.prefix + opts.min).split('')
+							}, opts.postFormat((opts.prefix + opts.min).split(''), 0, true, opts));
+						}
+					}
 				}
 
 				return isValid;

+ 1 - 1
package.json

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

File diff suppressed because it is too large
+ 1404 - 1255
qunit/tests_numeric.js