ソースを参照

further refactor to inputmask object

Robin Herbots 10 年 前
コミット
e3e61820ad

+ 1 - 1
bower.json

@@ -1,6 +1,6 @@
 {
   "name": "jquery.inputmask",
-  "version": "3.1.64-20",
+  "version": "3.1.64-24",
   "main": [
     "./dist/inputmask/jquery.inputmask.js",
     "./dist/inputmask/jquery.inputmask.extensions.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-20",
+    "version": "3.1.64-24",
     "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-20",
+	"version": "3.1.64-24",
     "type": "library",
     "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
     "homepage": "http://robinherbots.github.io/jquery.inputmask",

+ 1 - 1
dist/inputmask/jquery.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-20
+* Version: 3.1.64-24
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery", "./jquery.inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery"), require("./jquery.inputmask")) : factory(jQuery);

ファイルの差分が大きいため隠しています
+ 1 - 1
dist/inputmask/jquery.inputmask.date.extensions.min.js


+ 1 - 1
dist/inputmask/jquery.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-20
+* Version: 3.1.64-24
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery", "./jquery.inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery"), require("./jquery.inputmask")) : factory(jQuery);

ファイルの差分が大きいため隠しています
+ 1 - 1
dist/inputmask/jquery.inputmask.extensions.min.js


+ 24 - 20
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-20
+* Version: 3.1.64-24
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery")) : factory(jQuery);
@@ -30,6 +30,18 @@
         return aliasDefinition ? (aliasDefinition.alias && resolveAlias(aliasDefinition.alias, void 0, opts), 
         $.extend(!0, opts, aliasDefinition), $.extend(!0, opts, options), !0) : !1;
     }
+    function importAttributeOptions(npt, opts, importedOptionsContainer) {
+        var $npt = $(npt);
+        $npt.data("inputmask-alias") && resolveAlias($npt.data("inputmask-alias"), $.extend(!0, {}, opts), opts);
+        for (var option in opts) {
+            var optionData = $npt.data("inputmask-" + option.toLowerCase());
+            void 0 != optionData && (optionData = "boolean" == typeof optionData ? optionData : optionData.toString(), 
+            "mask" == option && 0 == optionData.indexOf("[") ? (opts[option] = optionData.replace(/[\s[\]]/g, "").split("','"), 
+            opts[option][0] = opts[option][0].replace("'", ""), opts[option][opts[option].length - 1] = opts[option][opts[option].length - 1].replace("'", "")) : opts[option] = optionData, 
+            importedOptionsContainer && (importedOptionsContainer[option] = opts[option]));
+        }
+        return opts;
+    }
     function generateMaskSet(opts, nocache) {
         function analyseMask(mask) {
             function maskToken(isGroup, isOptional, isQuantifier, isAlternator) {
@@ -270,7 +282,7 @@
                 i++), startPos++) : i++;
             }
             var lvp = getLastValidPosition(), ml = getMaskLength();
-            for (void 0 != getMaskSet().validPositions[lvp] && getMaskSet().validPositions[lvp].input == opts.radixPoint && delete getMaskSet().validPositions[lvp], 
+            for (nocheck !== !0 && void 0 != getMaskSet().validPositions[lvp] && getMaskSet().validPositions[lvp].input == opts.radixPoint && delete getMaskSet().validPositions[lvp], 
             i = lvp + 1; ml >= i; i++) getMaskSet().validPositions[i] && delete getMaskSet().validPositions[i];
             resetMaskSet(!0);
         }
@@ -1266,33 +1278,25 @@
                     action: "isValid",
                     value: value
                 }, generateMaskSet(opts, options && void 0 !== options.definitions), opts);
+            },
+            mask: function(el) {
+                importAttributeOptions(el, this.opts);
+                var maskset = generateMaskSet(this.opts, this.noMasksCache);
+                return void 0 != maskset && maskScope({
+                    action: "mask",
+                    el: el
+                }, maskset, this.opts), el;
             }
         };
         var ua = navigator.userAgent, iphone = null !== ua.match(new RegExp("iphone", "i")), androidchrome = (null !== ua.match(new RegExp("android.*safari.*", "i")), 
         null !== ua.match(new RegExp("android.*chrome.*", "i"))), androidfirefox = null !== ua.match(new RegExp("android.*firefox.*", "i")), PasteEventType = (/Kindle/i.test(ua) || /Silk/i.test(ua) || /KFTT/i.test(ua) || /KFOT/i.test(ua) || /KFJWA/i.test(ua) || /KFJWI/i.test(ua) || /KFSOWI/i.test(ua) || /KFTHWA/i.test(ua) || /KFTHWI/i.test(ua) || /KFAPWA/i.test(ua) || /KFAPWI/i.test(ua), 
         isInputEventSupported("paste") ? "paste" : isInputEventSupported("input") ? "input" : "propertychange");
         $.inputmask = inputmask.prototype, $.fn.inputmask = function(fn, options) {
-            function importAttributeOptions(npt, opts, importedOptionsContainer) {
-                var $npt = $(npt);
-                $npt.data("inputmask-alias") && resolveAlias($npt.data("inputmask-alias"), $.extend(!0, {}, opts), opts);
-                for (var option in opts) {
-                    var optionData = $npt.data("inputmask-" + option.toLowerCase());
-                    void 0 != optionData && (optionData = "boolean" == typeof optionData ? optionData : optionData.toString(), 
-                    "mask" == option && 0 == optionData.indexOf("[") ? (opts[option] = optionData.replace(/[\s[\]]/g, "").split("','"), 
-                    opts[option][0] = opts[option][0].replace("'", ""), opts[option][opts[option].length - 1] = opts[option][opts[option].length - 1].replace("'", "")) : opts[option] = optionData, 
-                    importedOptionsContainer && (importedOptionsContainer[option] = opts[option]));
-                }
-                return opts;
-            }
             var maskset, opts = $.extend(!0, {}, $.inputmask.defaults, options);
             if ("string" == typeof fn) switch (fn) {
               case "mask":
-                return resolveAlias(opts.alias, options, opts), this.each(function() {
-                    return importAttributeOptions(this, opts), maskset = generateMaskSet(opts, options && void 0 !== options.definitions), 
-                    void 0 == maskset ? this : void maskScope({
-                        action: "mask",
-                        el: this
-                    }, maskset, opts);
+                return this.each(function() {
+                    return new inputmask(options).mask(this);
                 });
 
               case "unmaskedvalue":

ファイルの差分が大きいため隠しています
+ 3 - 3
dist/inputmask/jquery.inputmask.min.js


+ 2 - 2
dist/inputmask/jquery.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-20
+* Version: 3.1.64-24
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery", "./jquery.inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery"), require("./jquery.inputmask")) : factory(jQuery);
@@ -79,7 +79,7 @@
                 needsRefresh = bufValOrigin != bufVal, buffer.length = bufVal.length;
                 for (var i = 0, l = bufVal.length; l > i; i++) buffer[i] = bufVal.charAt(i);
                 var newPos = $.inArray("?", buffer);
-                if (-1 == newPos && (newPos = pos), reformatOnly ? buffer[newPos] = charAtPos : buffer.splice(newPos, 1), 
+                if (-1 == newPos && (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: newPos,

ファイルの差分が大きいため隠しています
+ 2 - 2
dist/inputmask/jquery.inputmask.numeric.extensions.min.js


+ 1 - 1
dist/inputmask/jquery.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-20
+* Version: 3.1.64-24
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery", "./jquery.inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery"), require("./jquery.inputmask")) : factory(jQuery);

ファイルの差分が大きいため隠しています
+ 1 - 1
dist/inputmask/jquery.inputmask.phone.extensions.min.js


+ 1 - 1
dist/inputmask/jquery.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-20
+* Version: 3.1.64-24
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery", "./jquery.inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery"), require("./jquery.inputmask")) : factory(jQuery);

ファイルの差分が大きいため隠しています
+ 1 - 1
dist/inputmask/jquery.inputmask.regex.extensions.min.js


+ 25 - 21
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-20
+* Version: 3.1.64-24
 */
 !function($) {
     function inputmask(options) {
@@ -28,6 +28,18 @@
         return aliasDefinition ? (aliasDefinition.alias && resolveAlias(aliasDefinition.alias, void 0, opts), 
         $.extend(!0, opts, aliasDefinition), $.extend(!0, opts, options), !0) : !1;
     }
+    function importAttributeOptions(npt, opts, importedOptionsContainer) {
+        var $npt = $(npt);
+        $npt.data("inputmask-alias") && resolveAlias($npt.data("inputmask-alias"), $.extend(!0, {}, opts), opts);
+        for (var option in opts) {
+            var optionData = $npt.data("inputmask-" + option.toLowerCase());
+            void 0 != optionData && (optionData = "boolean" == typeof optionData ? optionData : optionData.toString(), 
+            "mask" == option && 0 == optionData.indexOf("[") ? (opts[option] = optionData.replace(/[\s[\]]/g, "").split("','"), 
+            opts[option][0] = opts[option][0].replace("'", ""), opts[option][opts[option].length - 1] = opts[option][opts[option].length - 1].replace("'", "")) : opts[option] = optionData, 
+            importedOptionsContainer && (importedOptionsContainer[option] = opts[option]));
+        }
+        return opts;
+    }
     function generateMaskSet(opts, nocache) {
         function analyseMask(mask) {
             function maskToken(isGroup, isOptional, isQuantifier, isAlternator) {
@@ -268,7 +280,7 @@
                 i++), startPos++) : i++;
             }
             var lvp = getLastValidPosition(), ml = getMaskLength();
-            for (void 0 != getMaskSet().validPositions[lvp] && getMaskSet().validPositions[lvp].input == opts.radixPoint && delete getMaskSet().validPositions[lvp], 
+            for (nocheck !== !0 && void 0 != getMaskSet().validPositions[lvp] && getMaskSet().validPositions[lvp].input == opts.radixPoint && delete getMaskSet().validPositions[lvp], 
             i = lvp + 1; ml >= i; i++) getMaskSet().validPositions[i] && delete getMaskSet().validPositions[i];
             resetMaskSet(!0);
         }
@@ -1264,33 +1276,25 @@
                     action: "isValid",
                     value: value
                 }, generateMaskSet(opts, options && void 0 !== options.definitions), opts);
+            },
+            mask: function(el) {
+                importAttributeOptions(el, this.opts);
+                var maskset = generateMaskSet(this.opts, this.noMasksCache);
+                return void 0 != maskset && maskScope({
+                    action: "mask",
+                    el: el
+                }, maskset, this.opts), el;
             }
         };
         var ua = navigator.userAgent, iphone = null !== ua.match(new RegExp("iphone", "i")), androidchrome = (null !== ua.match(new RegExp("android.*safari.*", "i")), 
         null !== ua.match(new RegExp("android.*chrome.*", "i"))), androidfirefox = null !== ua.match(new RegExp("android.*firefox.*", "i")), PasteEventType = (/Kindle/i.test(ua) || /Silk/i.test(ua) || /KFTT/i.test(ua) || /KFOT/i.test(ua) || /KFJWA/i.test(ua) || /KFJWI/i.test(ua) || /KFSOWI/i.test(ua) || /KFTHWA/i.test(ua) || /KFTHWI/i.test(ua) || /KFAPWA/i.test(ua) || /KFAPWI/i.test(ua), 
         isInputEventSupported("paste") ? "paste" : isInputEventSupported("input") ? "input" : "propertychange");
         $.inputmask = inputmask.prototype, $.fn.inputmask = function(fn, options) {
-            function importAttributeOptions(npt, opts, importedOptionsContainer) {
-                var $npt = $(npt);
-                $npt.data("inputmask-alias") && resolveAlias($npt.data("inputmask-alias"), $.extend(!0, {}, opts), opts);
-                for (var option in opts) {
-                    var optionData = $npt.data("inputmask-" + option.toLowerCase());
-                    void 0 != optionData && (optionData = "boolean" == typeof optionData ? optionData : optionData.toString(), 
-                    "mask" == option && 0 == optionData.indexOf("[") ? (opts[option] = optionData.replace(/[\s[\]]/g, "").split("','"), 
-                    opts[option][0] = opts[option][0].replace("'", ""), opts[option][opts[option].length - 1] = opts[option][opts[option].length - 1].replace("'", "")) : opts[option] = optionData, 
-                    importedOptionsContainer && (importedOptionsContainer[option] = opts[option]));
-                }
-                return opts;
-            }
             var maskset, opts = $.extend(!0, {}, $.inputmask.defaults, options);
             if ("string" == typeof fn) switch (fn) {
               case "mask":
-                return resolveAlias(opts.alias, options, opts), this.each(function() {
-                    return importAttributeOptions(this, opts), maskset = generateMaskSet(opts, options && void 0 !== options.definitions), 
-                    void 0 == maskset ? this : void maskScope({
-                        action: "mask",
-                        el: this
-                    }, maskset, opts);
+                return this.each(function() {
+                    return new inputmask(options).mask(this);
                 });
 
               case "unmaskedvalue":
@@ -1989,7 +1993,7 @@
                 needsRefresh = bufValOrigin != bufVal, buffer.length = bufVal.length;
                 for (var i = 0, l = bufVal.length; l > i; i++) buffer[i] = bufVal.charAt(i);
                 var newPos = $.inArray("?", buffer);
-                if (-1 == newPos && (newPos = pos), reformatOnly ? buffer[newPos] = charAtPos : buffer.splice(newPos, 1), 
+                if (-1 == newPos && (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: newPos,

ファイルの差分が大きいため隠しています
+ 5 - 4
dist/jquery.inputmask.bundle.min.js


ファイルの差分が大きいため隠しています
+ 578 - 488
js/jquery.inputmask.date.extensions.js


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

@@ -126,4 +126,4 @@ Optional extensions on the jquery.inputmask base
 		}
 	});
 	return $.fn.inputmask;
-})(jQuery);
+})(jQuery);

+ 35 - 33
js/jquery.inputmask.js

@@ -144,7 +144,17 @@
 					"value": value
 				}, generateMaskSet(opts, options && options.definitions !== undefined), opts);
 			},
-
+			mask: function(el) {
+				importAttributeOptions(el, this.opts);
+				var maskset = generateMaskSet(this.opts, this.noMasksCache);
+				if (maskset != undefined) {
+					maskScope({
+						"action": "mask",
+						"el": el
+					}, maskset, this.opts);
+				}
+				return el;
+			}
 		}
 
 		//helper functions
@@ -182,6 +192,28 @@
 			return false;
 		}
 
+		function importAttributeOptions(npt, opts, importedOptionsContainer) {
+			var $npt = $(npt);
+			if ($npt.data("inputmask-alias")) {
+				resolveAlias($npt.data("inputmask-alias"), $.extend(true, {}, opts), opts);
+			}
+			for (var option in opts) {
+				var optionData = $npt.data("inputmask-" + option.toLowerCase());
+				if (optionData != undefined) {
+					optionData = typeof optionData == "boolean" ? optionData : optionData.toString();
+					if (option == "mask" && optionData.indexOf("[") == 0) {
+						opts[option] = optionData.replace(/[\s[\]]/g, "").split("','");
+						opts[option][0] = opts[option][0].replace("'", "");
+						opts[option][opts[option].length - 1] = opts[option][opts[option].length - 1].replace("'", "");
+					} else
+						opts[option] = optionData;
+					if (importedOptionsContainer)
+						importedOptionsContainer[option] = opts[option];
+				}
+			}
+			return opts;
+		}
+
 		function generateMaskSet(opts, nocache) {
 			var ms = undefined;
 
@@ -652,7 +684,7 @@
 				//remove radixpoint if needed
 				var lvp = getLastValidPosition(),
 					ml = getMaskLength();
-				if (getMaskSet()["validPositions"][lvp] != undefined && getMaskSet()["validPositions"][lvp].input == opts.radixPoint)
+				if (nocheck !== true && getMaskSet()["validPositions"][lvp] != undefined && getMaskSet()["validPositions"][lvp].input == opts.radixPoint)
 					delete getMaskSet()["validPositions"][lvp];
 
 				for (i = lvp + 1; i <= ml; i++) {
@@ -2447,44 +2479,14 @@
 		$.inputmask = inputmask.prototype;
 
 		$.fn.inputmask = function(fn, options) {
-			function importAttributeOptions(npt, opts, importedOptionsContainer) {
-				var $npt = $(npt);
-				if ($npt.data("inputmask-alias")) {
-					resolveAlias($npt.data("inputmask-alias"), $.extend(true, {}, opts), opts);
-				}
-				for (var option in opts) {
-					var optionData = $npt.data("inputmask-" + option.toLowerCase());
-					if (optionData != undefined) {
-						optionData = typeof optionData == "boolean" ? optionData : optionData.toString();
-						if (option == "mask" && optionData.indexOf("[") == 0) {
-							opts[option] = optionData.replace(/[\s[\]]/g, "").split("','");
-							opts[option][0] = opts[option][0].replace("'", "");
-							opts[option][opts[option].length - 1] = opts[option][opts[option].length - 1].replace("'", "");
-						} else
-							opts[option] = optionData;
-						if (importedOptionsContainer)
-							importedOptionsContainer[option] = opts[option];
-					}
-				}
-				return opts;
-			}
 			var opts = $.extend(true, {}, $.inputmask.defaults, options),
 				maskset;
 
 			if (typeof fn === "string") {
 				switch (fn) {
 					case "mask":
-						resolveAlias(opts.alias, options, opts);
 						return this.each(function() {
-							importAttributeOptions(this, opts)
-							maskset = generateMaskSet(opts, options && options.definitions !== undefined);
-							if (maskset == undefined) {
-								return this;
-							}
-							maskScope({
-								"action": "mask",
-								"el": this
-							}, maskset, opts);
+							return new inputmask(options).mask(this);
 						});
 					case "unmaskedvalue":
 						var $input = $(this);

+ 2 - 2
js/jquery.inputmask.numeric.extensions.js

@@ -151,7 +151,7 @@ Optional extensions on the jquery.inputmask base
 					buffer[i] = bufVal.charAt(i);
 				}
 				var newPos = $.inArray("?", buffer);
-				if (newPos == -1) newPos = pos;
+				if (newPos == -1) newPos = $.inArray(opts.radixpoint, buffer);
 				if (reformatOnly) buffer[newPos] = charAtPos;
 				else buffer.splice(newPos, 1);
 
@@ -592,4 +592,4 @@ Optional extensions on the jquery.inputmask base
 		}
 	});
 	return $.fn.inputmask;
-})(jQuery);
+})(jQuery);

+ 3 - 3
js/jquery.inputmask.phone.extensions.js

@@ -9,10 +9,10 @@ Phone extension.
 When using this extension make sure you specify the correct url to get the masks
 
  $(selector).inputmask("phone", {
-                url: "Scripts/jquery.inputmask/phone-codes/phone-codes.json", 
+                url: "Scripts/jquery.inputmask/phone-codes/phone-codes.json",
                 onKeyValidation: function () { //show some metadata in the console
                     console.log($(this).inputmask("getmetadata")["cd"]);
-                } 
+                }
   });
 
 
@@ -63,4 +63,4 @@ When using this extension make sure you specify the correct url to get the masks
 		}
 	});
 	return $.fn.inputmask;
-})(jQuery);
+})(jQuery);

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

@@ -200,4 +200,4 @@ Allows for using regular expressions as a mask
 		}
 	});
 	return $.fn.inputmask;
-})(jQuery);
+})(jQuery);

+ 1 - 1
package.json

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

+ 31 - 2
qunit/tests_numeric.js

@@ -309,7 +309,7 @@ test("inputmask(\"decimal\", { autoGroup: true, groupSeparator: \",\" }\") - inp
 });
 
 asyncTest("inputmask(\"decimal\", { autoGroup: true, groupSeparator: \",\", decimalProtect: true }\") - input 12345.123 + remove .123", function () {
-    var $fixture = $("body");
+    var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $("#testmask").inputmask("decimal", { autoGroup: true, groupSeparator: ",", decimalProtect: true });
 
@@ -833,7 +833,7 @@ test("inputmask(\"integer\") - -5.000,77 - DrSammyD", function () {
 });
 
 asyncTest("inputmask(\"decimal\ placeholder :\"\" digitsoptional: false) - 123 - loostro", function () {
-    var $fixture = $("body");
+    var $fixture =$("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" value="0,00" />');
     $("#testmask").inputmask("decimal", {
         radixPoint: ",",
@@ -1278,3 +1278,32 @@ test("decimal alias - type 123456789 - add , before 8 - backspace - jpontet", fu
     equal($("#testmask")[0]._valueGet(), "123 456,89", "Result " + $("#testmask")[0]._valueGet());
     $("#testmask").remove();
 });
+
+test("decimal alias - type 1234567890 - add , before 9 - jpontet", function () {
+    var $fixture = $("#qunit-fixture");
+    $fixture.append('<input type="text" id="testmask" />');
+    $("#testmask").inputmask("decimal", {allowMinus: true, integerDigits: 12, digits: 2, radixPoint: ",", autoGroup: true, groupSeparator: " ", groupSize: 3, rightAlign: false});
+
+    $("#testmask")[0].focus();
+    $("#testmask").click();
+    $("#testmask").Type("1234567890");
+    $.caret($("#testmask"), 10);
+    $("#testmask").SendKey(",");
+    equal($("#testmask")[0]._valueGet(), "12 345 678,90", "Result " + $("#testmask")[0]._valueGet());
+    $("#testmask").remove();
+});
+
+test("decimal alias - type 1234567890 - add , before 9 - backspace - jpontet", function () {
+    var $fixture = $("#qunit-fixture");
+    $fixture.append('<input type="text" id="testmask" />');
+    $("#testmask").inputmask("decimal", {allowMinus: true, integerDigits: 12, digits: 2, radixPoint: ",", autoGroup: true, groupSeparator: " ", groupSize: 3, rightAlign: false});
+
+    $("#testmask")[0].focus();
+    $("#testmask").click();
+    $("#testmask").Type("1234567890");
+    $.caret($("#testmask"), 10);
+    $("#testmask").SendKey(",");
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
+    equal($("#testmask")[0]._valueGet(), "1 234 567,90", "Result " + $("#testmask")[0]._valueGet());
+    $("#testmask").remove();
+});