Browse Source

Decimal numbers with fixed decimal part fix #990

Robin Herbots 10 years ago
parent
commit
d12e8551e0

+ 1 - 0
CHANGELOG.md

@@ -31,6 +31,7 @@ All notable changes to this project will be documented in this file.
 - Update placeholder handling
 
 ### Fixed
+- Decimal numbers with fixed decimal part #990
 - Focus loop on IE9 with numeric.extensions #989
 - Numeric inputs with default value are setted to blank when submit the form #983
 - Default Enter key function getting lost on an input mask text field #938

+ 1 - 1
bower.json

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


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

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


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


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-156
+* Version: 3.1.64-159
 */
 !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-156
+* Version: 3.1.64-159
 */
 !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-156
+* Version: 3.1.64-159
 */
 !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


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


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


+ 4 - 2
js/inputmask.js

@@ -807,6 +807,7 @@
 			}
 
 			resetMaskSet(true);
+
 			for (i = startPos + 1; i <= getLastValidPosition();) {
 				while (getMaskSet().validPositions[startPos] !== undefined) startPos++;
 				var s = getMaskSet().validPositions[startPos];
@@ -1956,10 +1957,11 @@
 			}
 
 			if (opts.numericInput || isRTL) {
-				if (k === Inputmask.keyCode.BACKSPACE)
+				if (k === Inputmask.keyCode.BACKSPACE) {
 					k = Inputmask.keyCode.DELETE;
-				else if (k === Inputmask.keyCode.DELETE)
+				} else if (k === Inputmask.keyCode.DELETE) {
 					k = Inputmask.keyCode.BACKSPACE;
+				}
 
 				if (isRTL) {
 					var pend = pos.end;

+ 45 - 41
js/inputmask.numeric.extensions.js

@@ -65,7 +65,9 @@ Optional extensions on the jquery.inputmask base
 
 				var mask = autoEscape(opts.prefix);
 				mask += "[+]";
-				mask += "~{1," + opts.integerDigits + "}";
+				if (opts.integerOptional === true) {
+					mask += "~{1," + opts.integerDigits + "}";
+				} else mask += "~{" + opts.integerDigits + "}";
 				if (opts.digits !== undefined && (isNaN(opts.digits) || parseInt(opts.digits) > 0)) {
 					if (opts.digitsOptional) {
 						mask += "[" + (opts.decimalProtect ? ":" : opts.radixPoint) + ";{" + opts.digits + "}]";
@@ -95,6 +97,7 @@ Optional extensions on the jquery.inputmask base
 				back: "" //")"
 			},
 			integerDigits: "+", //number of integerDigits
+			integerOptional: true,
 			prefix: "",
 			suffix: "",
 			rightAlign: true,
@@ -189,7 +192,7 @@ Optional extensions on the jquery.inputmask base
 				};
 			},
 			onBeforeWrite: function(e, buffer, caretPos, opts) {
-				if (e && e.type === "blur") {
+				if (e && (e.type === "blur" || e.type === "checkval")) {
 					//handle minvalue
 					var maskedValue = buffer.join(''),
 						processValue = maskedValue.replace(opts.prefix, "");
@@ -335,22 +338,24 @@ Optional extensions on the jquery.inputmask base
 			},
 			radixHandler: function(chrs, maskset, pos, strict, opts) {
 				if (!strict) {
-					if ($.inArray(chrs, [",", "."]) != -1) chrs = opts.radixPoint;
+					if ($.inArray(chrs, [",", "."]) !== -1) chrs = opts.radixPoint;
 					if (chrs === opts.radixPoint && (opts.digits != undefined && (isNaN(opts.digits) || parseInt(opts.digits) > 0))) {
 						var radixPos = $.inArray(opts.radixPoint, maskset.buffer),
 							integerValue = maskset.buffer.join('').match(opts.regex.integerPart(opts));
 
-						if (radixPos != -1 && maskset["validPositions"][radixPos]) {
-							if (maskset["validPositions"][radixPos - 1])
+						if (radixPos !== -1 && maskset.validPositions[radixPos]) {
+							if (maskset.validPositions[radixPos - 1]) {
 								return {
 									"caret": radixPos + 1
 								};
-							else return {
-								"pos": integerValue.index,
-								c: integerValue[0],
-								"caret": radixPos + 1
-							};
-						} else if (!integerValue || (integerValue["0"] == "0" && (integerValue.index + 1) != pos)) {
+							} else {
+								return {
+									"pos": integerValue.index,
+									c: integerValue[0],
+									"caret": radixPos + 1
+								};
+							}
+						} else if (!integerValue || (integerValue["0"] === "0" && (integerValue.index + 1) !== pos)) {
 							maskset.buffer[integerValue ? integerValue.index : pos] = "0";
 							return {
 								"pos": (integerValue ? integerValue.index : pos) + 1,
@@ -362,30 +367,31 @@ Optional extensions on the jquery.inputmask base
 				return false;
 			},
 			leadingZeroHandler: function(chrs, maskset, pos, strict, opts) {
-				if (opts.numericInput == true) {
-					if (maskset.buffer[maskset.buffer.length - opts.prefix.length - 1] == "0")
+				if (opts.numericInput === true) {
+					if (maskset.buffer[maskset.buffer.length - opts.prefix.length - 1] === "0") {
 						return {
 							"pos": pos,
 							"remove": maskset.buffer.length - opts.prefix.length - 1
 						};
+					}
 				} else {
-					var matchRslt = maskset.buffer.join('').match(opts.regex.integerNPart(opts)),
+					var matchRslt = maskset.buffer.join("").match(opts.regex.integerNPart(opts)),
 						radixPosition = $.inArray(opts.radixPoint, maskset.buffer);
-					if (matchRslt && !strict && (radixPosition == -1 || pos <= radixPosition)) {
-						if (matchRslt["0"].indexOf("0") == 0) {
+					if (matchRslt && !strict && (radixPosition === -1 || pos <= radixPosition)) {
+						if (matchRslt["0"].indexOf("0") === 0) {
 							if (pos < opts.prefix.length) pos = matchRslt.index; //position
 							var _radixPosition = $.inArray(opts.radixPoint, maskset._buffer);
-							var digitsMatch = maskset._buffer && maskset.buffer.slice(radixPosition).join('') == maskset._buffer.slice(_radixPosition).join('') || parseInt(maskset.buffer.slice(radixPosition + 1).join('')) == 0;
-							var integerMatch = maskset._buffer && maskset.buffer.slice(matchRslt.index, radixPosition).join('') == maskset._buffer.slice(opts.prefix.length, _radixPosition).join('') || maskset.buffer.slice(matchRslt.index, radixPosition).join('') == "0";
+							var digitsMatch = maskset._buffer && maskset.buffer.slice(radixPosition).join("") === maskset._buffer.slice(_radixPosition).join("") || parseInt(maskset.buffer.slice(radixPosition + 1).join("")) === 0;
+							var integerMatch = maskset._buffer && maskset.buffer.slice(matchRslt.index, radixPosition).join("") === maskset._buffer.slice(opts.prefix.length, _radixPosition).join("") || maskset.buffer.slice(matchRslt.index, radixPosition).join("") === "0";
 
-							if (radixPosition == -1 || digitsMatch && integerMatch) {
+							if (radixPosition === -1 || digitsMatch && integerMatch) {
 								maskset.buffer.splice(matchRslt.index, 1);
 								pos = pos > matchRslt.index ? pos - 1 : matchRslt.index;
 								return {
 									"pos": pos,
 									"remove": matchRslt.index
 								};
-							} else if (matchRslt.index + 1 == pos || chrs == "0") {
+							} else if (matchRslt.index + 1 === pos || chrs === "0") {
 								maskset.buffer.splice(matchRslt.index, 1);
 								pos = matchRslt.index;
 								return {
@@ -393,7 +399,7 @@ Optional extensions on the jquery.inputmask base
 									"remove": matchRslt.index
 								};
 							}
-						} else if (chrs === "0" && pos <= matchRslt.index && matchRslt["0"] != opts.groupSeparator) {
+						} else if (chrs === "0" && pos <= matchRslt.index && matchRslt["0"] !== opts.groupSeparator) {
 							return false;
 						}
 					}
@@ -403,7 +409,7 @@ Optional extensions on the jquery.inputmask base
 			postValidation: function(buffer, opts) {
 				//handle maxvalue
 				var isValid = true,
-					maskedValue = buffer.join(''),
+					maskedValue = buffer.join(""),
 					processValue = maskedValue.replace(opts.prefix, "");
 				processValue = processValue.replace(opts.suffix, "");
 				processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), "");
@@ -411,7 +417,7 @@ 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;
+				processValue = processValue === opts.negationSymbol.front ? processValue + "0" : processValue;
 
 				if (isFinite(processValue)) {
 					if (isFinite(opts.max)) {
@@ -422,8 +428,8 @@ Optional extensions on the jquery.inputmask base
 						if (!isValid) {
 							isValid = $.extend(true, {
 								"refreshFromBuffer": true,
-								"buffer": (opts.prefix + opts.min).split('')
-							}, opts.postFormat((opts.prefix + opts.min).split(''), 0, true, opts));
+								"buffer": (opts.prefix + opts.min).split("")
+							}, opts.postFormat((opts.prefix + opts.min).split(""), 0, true, opts));
 							isValid.refreshFromBuffer = true; //enforce refresh
 						}
 					}
@@ -629,27 +635,25 @@ Optional extensions on the jquery.inputmask base
 					var buffer = [];
 					//build new buffer from validPositions
 					for (var vp in maskset.validPositions) {
-						buffer.push(maskset.validPositions[vp].input);
+						if (maskset.validPositions[vp].input !== undefined) buffer.push(maskset.validPositions[vp].input);
 					}
 					//remove radix Injection
 					if (radixInjection) {
 						delete maskset.validPositions[radixPos];
 					}
-					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 || opts.numericInput)) {
-						if (matchRslt["0"].indexOf("0") === 0) {
-							canClear = matchRslt.index !== position || radixPosition === -1;
-						} else {
-							var intPart = parseInt(matchRslt["0"].replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""));
-							if (radixPosition !== -1 && intPart < 10 && maskset.validPositions[position]) {
-								maskset.validPositions[position].input = "0";
-								maskset.p = opts.prefix.length + 1;
-								canClear = false;
+
+					if (radixPos > 0) {
+						matchRslt = buffer.join("").match(opts.regex.integerNPart(opts));
+						if (matchRslt && position <= radixPos) {
+							if (matchRslt["0"].indexOf("0") === 0) {
+								canClear = matchRslt.index !== position;
+							} else {
+								var intPart = parseInt(matchRslt["0"].replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""));
+								if (intPart < 10 && maskset.validPositions[position]) {
+									maskset.validPositions[position].input = "0";
+									maskset.p = opts.prefix.length + 1;
+									canClear = false;
+								}
 							}
 						}
 					}

+ 1 - 1
package.json

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

+ 19 - 0
qunit/tests_numeric.js

@@ -1468,3 +1468,22 @@ test("decimal alias - overwrite decimal value - shahvaiz", function() {
 	equal($("#testmask")[0].inputmask._valueGet(), "123.4%", "Result " + $("#testmask")[0].inputmask._valueGet());
 	$("#testmask").remove();
 });
+
+asyncTest("numeric alias - placeholder: \"_\" - lucafik", function() {
+	var $fixture = $("#qunit-fixture");
+	$fixture.append('<input type="text" id="testmask" />');
+	$("#testmask").inputmask("numeric", {
+		integerDigits: 2,
+		digits: 2,
+		placeholder: "_",
+		digitsOptional: false
+	});
+	$("#testmask")[0].focus();
+	$("#testmask").click();
+	setTimeout(function() {
+		$("#testmask").Type("12");
+		start();
+		equal($("#testmask")[0].inputmask._valueGet(), "12.__", "Result " + $("#testmask")[0].inputmask._valueGet());
+		$("#testmask").remove();
+	}, 0);
+});

+ 286 - 236
qunit/tests_numericinput.js

@@ -1,271 +1,321 @@
 module("Direction RTL");
-asyncTest("inputmask(\"999.999.999\") - delete 2nd with backspace, continue the mask", function () {
-    var $fixture = $("#qunit-fixture");
-    $fixture.append('<input type="text" id="testmask" dir="rtl" />');
-    $("#testmask").inputmask("999.999.999");
-
-    $("#testmask")[0].focus();
-    setTimeout(function () {
-        $("#testmask").SendKey("1");
-        $("#testmask").SendKey("2");
-        $("#testmask").SendKey("3");
-        $("#testmask").SendKey(Inputmask.keyCode.RIGHT);
-        $("#testmask").SendKey(Inputmask.keyCode.RIGHT);
-        $("#testmask").SendKey(Inputmask.keyCode.RIGHT);
-        $("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
-        $("#testmask").SendKey("4");
-        $("#testmask").SendKey(Inputmask.keyCode.LEFT);
-        $("#testmask").SendKey("5");
-        $("#testmask").SendKey("6");
-        start();
-        equal($("#testmask").val(), "___._65.341", "Result " + $("#testmask").val());
-
-        $("#testmask").remove();
-    }, 0);
+asyncTest("inputmask(\"999.999.999\") - delete 2nd with backspace, continue the mask", function() {
+	var $fixture = $("#qunit-fixture");
+	$fixture.append('<input type="text" id="testmask" dir="rtl" />');
+	$("#testmask").inputmask("999.999.999");
+
+	$("#testmask")[0].focus();
+	setTimeout(function() {
+		$("#testmask").SendKey("1");
+		$("#testmask").SendKey("2");
+		$("#testmask").SendKey("3");
+		$("#testmask").SendKey(Inputmask.keyCode.RIGHT);
+		$("#testmask").SendKey(Inputmask.keyCode.RIGHT);
+		$("#testmask").SendKey(Inputmask.keyCode.RIGHT);
+		$("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
+		$("#testmask").SendKey("4");
+		$("#testmask").SendKey(Inputmask.keyCode.LEFT);
+		$("#testmask").SendKey("5");
+		$("#testmask").SendKey("6");
+		start();
+		equal($("#testmask").val(), "___._65.341", "Result " + $("#testmask").val());
+
+		$("#testmask").remove();
+	}, 0);
 });
 
-asyncTest("inputmask(\"999.999.999\") - delete 2nd with delete, continue the mask", function () {
-    var $fixture = $("#qunit-fixture");
-    $fixture.append('<input type="text" id="testmask" dir="rtl" />');
-    $("#testmask").inputmask("999.999.999");
-
-    $("#testmask")[0].focus();
-    setTimeout(function () {
-        $("#testmask").SendKey("1");
-        $("#testmask").SendKey("2");
-        $("#testmask").SendKey("3");
-        $("#testmask").SendKey(Inputmask.keyCode.RIGHT);
-        $("#testmask").SendKey(Inputmask.keyCode.RIGHT);
-        $("#testmask").SendKey(Inputmask.keyCode.DELETE);
-        $("#testmask").SendKey("4");
-        $("#testmask").SendKey(Inputmask.keyCode.LEFT);
-        $("#testmask").SendKey("5");
-        $("#testmask").SendKey("6");
-        start();
-        equal($("#testmask").val(), "___._65.341", "Result " + $("#testmask").val());
-
-        $("#testmask").remove();
-    }, 0);
+asyncTest("inputmask(\"999.999.999\") - delete 2nd with delete, continue the mask", function() {
+	var $fixture = $("#qunit-fixture");
+	$fixture.append('<input type="text" id="testmask" dir="rtl" />');
+	$("#testmask").inputmask("999.999.999");
+
+	$("#testmask")[0].focus();
+	setTimeout(function() {
+		$("#testmask").SendKey("1");
+		$("#testmask").SendKey("2");
+		$("#testmask").SendKey("3");
+		$("#testmask").SendKey(Inputmask.keyCode.RIGHT);
+		$("#testmask").SendKey(Inputmask.keyCode.RIGHT);
+		$("#testmask").SendKey(Inputmask.keyCode.DELETE);
+		$("#testmask").SendKey("4");
+		$("#testmask").SendKey(Inputmask.keyCode.LEFT);
+		$("#testmask").SendKey("5");
+		$("#testmask").SendKey("6");
+		start();
+		equal($("#testmask").val(), "___._65.341", "Result " + $("#testmask").val());
+
+		$("#testmask").remove();
+	}, 0);
 });
 
-asyncTest("inputmask(\"999-aaa-999\")", function () {
-    var $fixture = $("#qunit-fixture");
-    $fixture.append('<input type="text" id="testmask" dir="rtl" />');
-    $("#testmask").inputmask("999-aaa-999");
+asyncTest("inputmask(\"999-aaa-999\")", function() {
+	var $fixture = $("#qunit-fixture");
+	$fixture.append('<input type="text" id="testmask" dir="rtl" />');
+	$("#testmask").inputmask("999-aaa-999");
 
-    $("#testmask")[0].focus();
-    setTimeout(function () {
-        $("#testmask").Type("123abc12");
-        start();
-        equal($("#testmask").val(), "_21-cba-321", "Result " + $("#testmask").val());
+	$("#testmask")[0].focus();
+	setTimeout(function() {
+		$("#testmask").Type("123abc12");
+		start();
+		equal($("#testmask").val(), "_21-cba-321", "Result " + $("#testmask").val());
 
-        $("#testmask").remove();
-    }, 0);
+		$("#testmask").remove();
+	}, 0);
 });
 
-asyncTest("inputmask(\"999-999-999\") - replace selection", function () {
-    var $fixture = $("#qunit-fixture");
-    $fixture.append('<input type="text" id="testmask" dir="rtl" />');
-    $("#testmask").inputmask("999-999-999");
-
-    $("#testmask")[0].focus();
-    setTimeout(function () {
-        $("#testmask").Type("123456789");
-        $.caret($("#testmask"), 4, 7);
-        $("#testmask").Type("5");
-        start();
-        equal($("#testmask").val(), "__9-875-321", "Result " + $("#testmask").val());
-
-        $("#testmask").remove();
-    }, 0);
+asyncTest("inputmask(\"999-999-999\") - replace selection", function() {
+	var $fixture = $("#qunit-fixture");
+	$fixture.append('<input type="text" id="testmask" dir="rtl" />');
+	$("#testmask").inputmask("999-999-999");
+
+	$("#testmask")[0].focus();
+	setTimeout(function() {
+		$("#testmask").Type("123456789");
+		$.caret($("#testmask"), 4, 7);
+		$("#testmask").Type("5");
+		start();
+		equal($("#testmask").val(), "__9-875-321", "Result " + $("#testmask").val());
+
+		$("#testmask").remove();
+	}, 0);
 });
 
-asyncTest("inputmask(\"999-999-999\") - replace selection with backspace", function () {
-    var $fixture = $("#qunit-fixture");
-    $fixture.append('<input type="text" id="testmask" dir="rtl" />');
-    $("#testmask").inputmask("999-999-999");
-
-    $("#testmask")[0].focus();
-    setTimeout(function () {
-        $("#testmask").Type("123456789");
-        $.caret($("#testmask"), 4, 7);
-        $("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
-        $("#testmask").Type("5");
-        start();
-        equal($("#testmask").val(), "__9-875-321", "Result " + $("#testmask").val());
-
-        $("#testmask").remove();
-    }, 0);
+asyncTest("inputmask(\"999-999-999\") - replace selection with backspace", function() {
+	var $fixture = $("#qunit-fixture");
+	$fixture.append('<input type="text" id="testmask" dir="rtl" />');
+	$("#testmask").inputmask("999-999-999");
+
+	$("#testmask")[0].focus();
+	setTimeout(function() {
+		$("#testmask").Type("123456789");
+		$.caret($("#testmask"), 4, 7);
+		$("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
+		$("#testmask").Type("5");
+		start();
+		equal($("#testmask").val(), "__9-875-321", "Result " + $("#testmask").val());
+
+		$("#testmask").remove();
+	}, 0);
 });
 
-asyncTest("inputmask(\"999-999-999\") - replace selection - with delete", function () {
-    var $fixture = $("#qunit-fixture");
-    $fixture.append('<input type="text" id="testmask" dir="rtl" />');
-    $("#testmask").inputmask("999-999-999");
-
-    $("#testmask")[0].focus();
-    setTimeout(function () {
-        $("#testmask").Type("123456789");
-        $.caret($("#testmask"), 4, 7);
-        $("#testmask").SendKey(Inputmask.keyCode.DELETE);
-        $("#testmask").Type("5");
-        start();
-        equal($("#testmask").val(), "__9-875-321", "Result " + $("#testmask").val());
-
-        $("#testmask").remove();
-    }, 0);
+asyncTest("inputmask(\"999-999-999\") - replace selection - with delete", function() {
+	var $fixture = $("#qunit-fixture");
+	$fixture.append('<input type="text" id="testmask" dir="rtl" />');
+	$("#testmask").inputmask("999-999-999");
+
+	$("#testmask")[0].focus();
+	setTimeout(function() {
+		$("#testmask").Type("123456789");
+		$.caret($("#testmask"), 4, 7);
+		$("#testmask").SendKey(Inputmask.keyCode.DELETE);
+		$("#testmask").Type("5");
+		start();
+		equal($("#testmask").val(), "__9-875-321", "Result " + $("#testmask").val());
+
+		$("#testmask").remove();
+	}, 0);
 });
 
 module("Numeric Input");
-asyncTest("inputmask({ mask: \"9\", numericInput: true, repeat: 10, greedy: true }); - 1234567890", function () {
-    var $fixture = $("#qunit-fixture");
-    $fixture.append('<input type="text" id="testmask" />');
-    $("#testmask").inputmask({ mask: "9", numericInput: true, repeat: 10, greedy: true });
-
-    $("#testmask")[0].focus();
-    setTimeout(function () {
-        $("#testmask").Type("1234567890");
-        start();
-        equal($("#testmask").val(), "1234567890", "Result " + $("#testmask").val());
-
-        $("#testmask").remove();
-    }, 0);
+asyncTest("inputmask({ mask: \"9\", numericInput: true, repeat: 10, greedy: true }); - 1234567890", function() {
+	var $fixture = $("#qunit-fixture");
+	$fixture.append('<input type="text" id="testmask" />');
+	$("#testmask").inputmask({
+		mask: "9",
+		numericInput: true,
+		repeat: 10,
+		greedy: true
+	});
+
+	$("#testmask")[0].focus();
+	setTimeout(function() {
+		$("#testmask").Type("1234567890");
+		start();
+		equal($("#testmask").val(), "1234567890", "Result " + $("#testmask").val());
+
+		$("#testmask").remove();
+	}, 0);
 });
-asyncTest("inputmask({ mask: \"9\", numericInput: true, repeat: 10, greedy: true }); - replace selection", function () {
-    var $fixture = $("#qunit-fixture");
-    $fixture.append('<input type="text" id="testmask" />');
-    $("#testmask").inputmask({ mask: "9", numericInput: true, repeat: 10, greedy: true });
-
-    $("#testmask")[0].focus();
-    setTimeout(function () {
-        $("#testmask").Type("1234567890");
-        $.caret($("#testmask"), 3, 6);
-        $("#testmask").Type("5");
-        start();
-        equal($("#testmask").val(), "__12357890", "Result " + $("#testmask").val());
-
-        $("#testmask").remove();
-    }, 0);
+asyncTest("inputmask({ mask: \"9\", numericInput: true, repeat: 10, greedy: true }); - replace selection", function() {
+	var $fixture = $("#qunit-fixture");
+	$fixture.append('<input type="text" id="testmask" />');
+	$("#testmask").inputmask({
+		mask: "9",
+		numericInput: true,
+		repeat: 10,
+		greedy: true
+	});
+
+	$("#testmask")[0].focus();
+	setTimeout(function() {
+		$("#testmask").Type("1234567890");
+		$.caret($("#testmask"), 3, 6);
+		$("#testmask").Type("5");
+		start();
+		equal($("#testmask").val(), "__12357890", "Result " + $("#testmask").val());
+
+		$("#testmask").remove();
+	}, 0);
 });
 
-asyncTest("inputmask({ mask: \"99-99-99\", numericInput: true }); - 1234567890", function () {
-    var $fixture = $("#qunit-fixture");
-    $fixture.append('<input type="text" id="testmask" />');
-    $("#testmask").inputmask({ mask: "99-99-99", numericInput: true });
-
-    $("#testmask")[0].focus();
-    setTimeout(function () {
-        $("#testmask").Type("1234567890");
-        start();
-        equal($("#testmask").val(), "12-34-56", "Result " + $("#testmask").val());
-
-        $("#testmask").remove();
-    }, 0);
+asyncTest("inputmask({ mask: \"99-99-99\", numericInput: true }); - 1234567890", function() {
+	var $fixture = $("#qunit-fixture");
+	$fixture.append('<input type="text" id="testmask" />');
+	$("#testmask").inputmask({
+		mask: "99-99-99",
+		numericInput: true
+	});
+
+	$("#testmask")[0].focus();
+	setTimeout(function() {
+		$("#testmask").Type("1234567890");
+		start();
+		equal($("#testmask").val(), "12-34-56", "Result " + $("#testmask").val());
+
+		$("#testmask").remove();
+	}, 0);
 });
 
-asyncTest("inputmask({ mask: \"€ 999.999.999,99\", numericInput: true }); - 123", function () {
-    var $fixture = $("#qunit-fixture");
-    $fixture.append('<input type="text" id="testmask" />');
-    $("#testmask").inputmask('€ 999.999.999,99', { numericInput: true });
-
-    $("#testmask")[0].focus();
-    setTimeout(function () {
-        $("#testmask").Type("123");
-        start();
-        equal($("#testmask").val(), "€ ___.___.__1,23", "Result " + $("#testmask").val());
-
-        $("#testmask").remove();
-    }, 0);
+asyncTest("inputmask({ mask: \"€ 999.999.999,99\", numericInput: true }); - 123", function() {
+	var $fixture = $("#qunit-fixture");
+	$fixture.append('<input type="text" id="testmask" />');
+	$("#testmask").inputmask('€ 999.999.999,99', {
+		numericInput: true
+	});
+
+	$("#testmask")[0].focus();
+	setTimeout(function() {
+		$("#testmask").Type("123");
+		start();
+		equal($("#testmask").val(), "€ ___.___.__1,23", "Result " + $("#testmask").val());
+
+		$("#testmask").remove();
+	}, 0);
 });
 
-asyncTest("inputmask({ mask: \"€ 999.999.999,99\", numericInput: true }); - 123 position before 456", function () {
-    var $fixture = $("#qunit-fixture");
-    $fixture.append('<input type="text" id="testmask" />');
-    $("#testmask").inputmask('€ 999.999.999,99', { numericInput: true });
-
-    $("#testmask")[0].focus();
-    setTimeout(function () {
-        $("#testmask").Type("123");
-        $.caret($("#testmask"), 12);
-        $("#testmask").Type("456");
-        start();
-        equal($("#testmask").val(), "€ ___.__4.561,23", "Result " + $("#testmask").val());
-
-        $("#testmask").remove();
-    }, 0);
+asyncTest("inputmask({ mask: \"€ 999.999.999,99\", numericInput: true }); - 123 position before 456", function() {
+	var $fixture = $("#qunit-fixture");
+	$fixture.append('<input type="text" id="testmask" />');
+	$("#testmask").inputmask('€ 999.999.999,99', {
+		numericInput: true
+	});
+
+	$("#testmask")[0].focus();
+	setTimeout(function() {
+		$("#testmask").Type("123");
+		$.caret($("#testmask"), 12);
+		$("#testmask").Type("456");
+		start();
+		equal($("#testmask").val(), "€ ___.__4.561,23", "Result " + $("#testmask").val());
+
+		$("#testmask").remove();
+	}, 0);
 });
 
-asyncTest("inputmask({ mask: \"€ 999.999.999,99\", { numericInput: true, radixPoint: \",\" }); - 123", function () {
-    var $fixture = $("#qunit-fixture");
-    $fixture.append('<input type="text" id="testmask" />');
-    $("#testmask").inputmask('€ 999.999.999,99', { numericInput: true, radixPoint: "," });
-
-    $("#testmask")[0].focus();
-    $("#testmask").click();
-    setTimeout(function () {
-        $("#testmask").Type("123");
-
-        equal($("#testmask").val(), "€ ___.___.__1,23", "Result " + $("#testmask").val());
-        start();
-        $("#testmask").remove();
-    }, 0);
+asyncTest("inputmask({ mask: \"€ 999.999.999,99\", { numericInput: true, radixPoint: \",\" }); - 123", function() {
+	var $fixture = $("#qunit-fixture");
+	$fixture.append('<input type="text" id="testmask" />');
+	$("#testmask").inputmask('€ 999.999.999,99', {
+		numericInput: true,
+		radixPoint: ","
+	});
+
+	$("#testmask")[0].focus();
+	$("#testmask").click();
+	setTimeout(function() {
+		$("#testmask").Type("123");
+
+		equal($("#testmask").val(), "€ ___.___.__1,23", "Result " + $("#testmask").val());
+		start();
+		$("#testmask").remove();
+	}, 0);
 });
 
-asyncTest("inputmask({ mask: \"€ 999.999.999,99\", { numericInput: true, radixPoint: \",\" }); - 123,45", function () {
-    var $fixture = $("#qunit-fixture");
-    $fixture.append('<input type="text" id="testmask" />');
-    $("#testmask").inputmask('€ 999.999.999,99', { numericInput: true, radixPoint: "," });
-
-    $("#testmask")[0].focus();
-    $("#testmask").click();
-    setTimeout(function () {
-        $("#testmask").Type("123,45");
-
-        equal($("#testmask").val(), "€ ___.___.123,45", "Result " + $("#testmask").val());
-        start();
-        $("#testmask").remove();
-    }, 0);
+asyncTest("inputmask({ mask: \"€ 999.999.999,99\", { numericInput: true, radixPoint: \",\" }); - 123,45", function() {
+	var $fixture = $("#qunit-fixture");
+	$fixture.append('<input type="text" id="testmask" />');
+	$("#testmask").inputmask('€ 999.999.999,99', {
+		numericInput: true,
+		radixPoint: ","
+	});
+
+	$("#testmask")[0].focus();
+	$("#testmask").click();
+	setTimeout(function() {
+		$("#testmask").Type("123,45");
+
+		equal($("#testmask").val(), "€ ___.___.123,45", "Result " + $("#testmask").val());
+		start();
+		$("#testmask").remove();
+	}, 0);
 });
 
-asyncTest("inputmask({ mask: \"9999 t\", { numericInput: true }); - 123 - Joe Rosa", function () {
-    var $fixture = $("#qunit-fixture");
-    $fixture.append('<input type="text" id="testmask" />');
-    $("#testmask").inputmask('9999 t', { numericInput: true });
-
-    $("#testmask").focus();
-    $("#testmask").click();
-    setTimeout(function () {
-        $("#testmask").Type("123");
-        start();
-        equal($("#testmask").val(), "_123 t", "Result " + $("#testmask").val());
-
-        $("#testmask").remove();
-    }, 0);
+asyncTest("inputmask({ mask: \"9999 t\", { numericInput: true }); - 123 - Joe Rosa", function() {
+	var $fixture = $("#qunit-fixture");
+	$fixture.append('<input type="text" id="testmask" />');
+	$("#testmask").inputmask('9999 t', {
+		numericInput: true
+	});
+
+	$("#testmask").focus();
+	$("#testmask").click();
+	setTimeout(function() {
+		$("#testmask").Type("123");
+		start();
+		equal($("#testmask").val(), "_123 t", "Result " + $("#testmask").val());
+
+		$("#testmask").remove();
+	}, 0);
 });
 
-asyncTest("inputmask({ mask: \"9999 t\", { numericInput: true, autoUnmask: true }); - 70  - Joe Rosa", function () {
-    var $fixture = $("#qunit-fixture");
-    $fixture.append('<input type="text" id="testmask" />');
-    $("#testmask").inputmask('9999 t', { numericInput: true, autoUnmask: true });
-
-    $("#testmask").focus();
-    $("#testmask").click();
-    setTimeout(function () {
-        $("#testmask").Type("70");
-        start();
-        equal($("#testmask").val(), "70", "Result " + $("#testmask").val());
+asyncTest("inputmask({ mask: \"9999 t\", { numericInput: true, autoUnmask: true }); - 70  - Joe Rosa", function() {
+	var $fixture = $("#qunit-fixture");
+	$fixture.append('<input type="text" id="testmask" />');
+	$("#testmask").inputmask('9999 t', {
+		numericInput: true,
+		autoUnmask: true
+	});
+
+	$("#testmask").focus();
+	$("#testmask").click();
+	setTimeout(function() {
+		$("#testmask").Type("70");
+		start();
+		equal($("#testmask").val(), "70", "Result " + $("#testmask").val());
+
+		$("#testmask").remove();
+	}, 0);
+});
 
-        $("#testmask").remove();
-    }, 0);
+asyncTest("inputmask({ mask: \"['$9.99', '$99.99', '$999.99', '$9,999.99', '$99,999.99', '$999,999.99', '$9,999,999.99', '$99,999,999.99', '$999,999,999.99'], 'placeholder': ' ', 'numericInput': true, 'rightAlignNumerics': false\" value=\"$100000.00\"", function() {
+	var $fixture = $("#qunit-fixture");
+	$fixture.append("<input type=\"text\" id=\"testmask\" data-inputmask=\"'mask': ['$9.99', '$99.99', '$999.99', '$9,999.99', '$99,999.99', '$999,999.99', '$9,999,999.99', '$99,999,999.99', '$999,999,999.99'], 'placeholder': ' ', 'numericInput': true, 'rightAlignNumerics': false\" value=\"$100000.00\"/>");
+	$("#testmask").inputmask();
+	setTimeout(function() {
+		equal($("#testmask").val(), "$100,000.00", "Result " + $("#testmask").val());
+		start();
+		$("#testmask").remove();
+	}, 0);
 });
 
-asyncTest("inputmask({ mask: \"['$9.99', '$99.99', '$999.99', '$9,999.99', '$99,999.99', '$999,999.99', '$9,999,999.99', '$99,999,999.99', '$999,999,999.99'], 'placeholder': ' ', 'numericInput': true, 'rightAlignNumerics': false\" value=\"$100000.00\"", function () {
-    var $fixture = $("#qunit-fixture");
-    $fixture.append("<input type=\"text\" id=\"testmask\" data-inputmask=\"'mask': ['$9.99', '$99.99', '$999.99', '$9,999.99', '$99,999.99', '$999,999.99', '$9,999,999.99', '$99,999,999.99', '$999,999,999.99'], 'placeholder': ' ', 'numericInput': true, 'rightAlignNumerics': false\" value=\"$100000.00\"/>");
-    $("#testmask").inputmask();
-    setTimeout(function () {
-        equal($("#testmask").val(), "$100,000.00", "Result " + $("#testmask").val());
-        start();
-        $("#testmask").remove();
-    }, 0);
+asyncTest("cuurency - numericInput: true - 123456 backspace everything", function() {
+	var $fixture = $("#qunit-fixture");
+	$fixture.append('<input type="text" id="testmask" />');
+	$("#testmask").inputmask("currency", {
+		numericInput: true
+	});
+
+	$("#testmask")[0].focus();
+	setTimeout(function() {
+		$("#testmask").Type("123456");
+    $("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
+    $("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
+    $("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
+    $("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
+
+		start();
+		equal($("#testmask").val(), "$ 0.12", "Result " + $("#testmask").val());
+
+		$("#testmask").remove();
+	}, 0);
 });

+ 1 - 1
qunit/tests_setvalue.js

@@ -110,7 +110,7 @@ test(".inputmask(\"mask\", {\"mask\": \"+375 (99) 999-99-99\"}); - \"+375 (37) 9
 });
 
 asyncTest(".inputmask(\"mask\", {\"mask\": \"+7(999)999-99-99\"}); - '7771231234' + '' - moongrate", function () {
-    var $fixture = $("body");
+    var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $("#testmask").inputmask("mask", { "mask": "+7(999)999-99-99" });
     $("#testmask")[0].focus();