Browse Source

update simulator.js

Robin Herbots 6 years ago
parent
commit
01935bc046
10 changed files with 357 additions and 245 deletions
  1. 1 1
      bower.json
  2. 1 1
      composer.json
  3. 1 1
      dist/inputmask.js
  4. 1 1
      dist/inputmask.min.js
  5. 1 1
      dist/jquery.inputmask.js
  6. 1 1
      dist/jquery.inputmask.min.js
  7. 1 1
      package.json
  8. 242 220
      qunit/simulator.js
  9. 21 0
      qunit/tests_date.js
  10. 87 18
      qunit/tests_numeric.js

+ 1 - 1
bower.json

@@ -1,6 +1,6 @@
 {
   "name": "inputmask",
-  "version": "5.0.0-beta.314",
+  "version": "5.0.0-beta.315",
   "main": [
 	  "./index.js",
     "./css/inputmask.css"

+ 1 - 1
composer.json

@@ -1,7 +1,7 @@
 {
   "name": "robinherbots/inputmask",
   "description": "Inputmask is a javascript library which creates an input mask.  Inputmask can run against vanilla javascript, jQuery and jqlite.",
-  "version": "5.0.0-beta.314",
+  "version": "5.0.0-beta.315",
   "type": "library",
   "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
   "homepage": "http://robinherbots.github.io/Inputmask",

+ 1 - 1
dist/inputmask.js

@@ -3,7 +3,7 @@
  * https://github.com/RobinHerbots/Inputmask
  * Copyright (c) 2010 - 2019 Robin Herbots
  * Licensed under the MIT license
- * Version: 5.0.0-beta.314
+ * Version: 5.0.0-beta.315
  */
 !function webpackUniversalModuleDefinition(root, factory) {
     if ("object" == typeof exports && "object" == typeof module) module.exports = factory(); else if ("function" == typeof define && define.amd) define([], factory); else {

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


+ 1 - 1
dist/jquery.inputmask.js

@@ -3,7 +3,7 @@
  * https://github.com/RobinHerbots/Inputmask
  * Copyright (c) 2010 - 2019 Robin Herbots
  * Licensed under the MIT license
- * Version: 5.0.0-beta.314
+ * Version: 5.0.0-beta.315
  */
 !function webpackUniversalModuleDefinition(root, factory) {
     if ("object" == typeof exports && "object" == typeof module) module.exports = factory(require("jquery")); else if ("function" == typeof define && define.amd) define([ "jquery" ], factory); else {

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


+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "inputmask",
-  "version": "5.0.0-beta.314",
+  "version": "5.0.0-beta.315",
   "description": "Inputmask is a javascript library which creates an input mask.  Inputmask can run against vanilla javascript, jQuery and jqlite.",
   "main": "index.js",
   "files": [

+ 242 - 220
qunit/simulator.js

@@ -1,224 +1,246 @@
 import keyCode from "../lib/keycode";
 
 export default function ($, Inputmask) {
-    $.caret = function (input, begin, end) {
-        input = input.nodeName ? input : input[0];
-        input.focus();
-        var range;
-        if (typeof begin === "number") {
-            end = (typeof end == "number") ? end : begin;
-            // if (!$(input).is(":visible")) {
-            // 	return;
-            // }
-
-            if (input.setSelectionRange) {
-                input.setSelectionRange(begin, end);
-            } else if (window.getSelection) {
-                range = document.createRange();
-                if (input.firstChild === undefined) {
-                    var textNode = document.createTextNode("");
-                    input.appendChild(textNode);
-                }
-                range.setStart(input.firstChild, begin < input.value.length ? begin : input.value.length);
-                range.setEnd(input.firstChild, end < input.value.length ? end : input.value.length);
-                range.collapse(true);
-                var sel = window.getSelection();
-                sel.removeAllRanges();
-                sel.addRange(range);
-                //input.focus();
-            } else if (input.createTextRange) {
-                range = input.createTextRange();
-                range.collapse(true);
-                range.moveEnd("character", end);
-                range.moveStart("character", begin);
-                range.select();
-
-            }
-        } else {
-            if ("selectionStart" in input && "selectionEnd" in input) {
-                begin = input.selectionStart;
-                end = input.selectionEnd;
-            } else if (window.getSelection) {
-                range = window.getSelection().getRangeAt(0);
-                if (range.commonAncestorContainer.parentNode === input || range.commonAncestorContainer === input) {
-                    begin = range.startOffset;
-                    end = range.endOffset;
-                }
-            } else if (document.selection && document.selection.createRange) {
-                range = document.selection.createRange();
-                begin = 0 - range.duplicate().moveStart("character", -100000);
-                end = begin + range.text.length;
-            }
-            /*eslint-disable consistent-return */
-            return {
-                "begin": begin,
-                "end": end
-            };
-            /*eslint-enable consistent-return */
-        }
-    };
-    $.fn = $.fn || $.prototype;
-    $.fn.SendKey = function (keycode, modifier) {
-        var elem = this.nodeName ? this : this[0], origCode = keycode;
-        elem.type = "text"; //force textinput to support caret fn
-
-
-        function trigger(elem, evnt) {
-            elem.focus();
-            if ($ === window.jQuery) {
-                $(elem).trigger(evnt);
-            } else {
-                if (document.createEvent) {
-                    elem.dispatchEvent(evnt);
-                } else {
-                    elem.fireEvent("on" + evnt.eventType, evnt);
-                }
-            }
-        }
-
-        var sendDummyKeydown = false;
-        if (Object.prototype.toString.call(keycode) == '[object String]') {
-            keycode = keycode.charCodeAt(0);
-            sendDummyKeydown = true;
-        }
-
-        switch (keycode) {
-            case keyCode.LEFT:
-                if (modifier == undefined) {
-                    var pos = $.caret(this);
-                    $.caret(this, pos.begin - 1);
-                    break;
-                }
-            case keyCode.RIGHT:
-                if (modifier == undefined) {
-                    var pos = $.caret(this);
-                    $.caret(this, pos.begin + 1);
-                    break;
-                }
-            default:
-                if ((window.Inputmask && window.Inputmask.prototype.defaults.inputEventOnly === true) ||
-                    (elem.inputmask && elem.inputmask.opts.inputEventOnly === true)) {
-                    var input = new $.Event("input"),
-                        currentValue = (elem.inputmask && elem.inputmask.__valueGet) ? elem.inputmask.__valueGet.call(elem) : elem.value,
-                        caretPos = $.caret(elem), caretOffset = 0;
-
-                    // console.log("initial " + currentValue);
-                    // console.log(caretPos);
-
-                    var front = currentValue.substring(0, caretPos.begin),
-                        back = currentValue.substring(caretPos.end),
-                        newValue = currentValue;
-
-                    switch (keycode) {
-                        case keyCode.BACKSPACE:
-                            if (caretPos.begin === caretPos.end)
-                                front = front.substr(0, front.length - 1)
-                            newValue = front + back;
-                            break;
-                        case keyCode.DELETE:
-                            if (origCode !== ".") {
-                                if (caretPos.begin === caretPos.end)
-                                    back = back.slice(1);
-                                newValue = front + back;
-                                break;
-                            }
-                        default:
-                            newValue = front + String.fromCharCode(keycode) + back;
-                            caretOffset = front.length > 0 ? 1 : 0;
-                            break;
-                    }
-
-                    if (elem.inputmask && elem.inputmask.__valueSet)
-                        elem.inputmask.__valueSet.call(elem, newValue);
-                    else elem.value = newValue;
-                    $.caret(elem, (newValue.length - back.length));
-                    trigger(elem, input);
-                } else {
-                    var keydown = new $.Event("keydown"),
-                        keypress = new $.Event("keypress"),
-                        keyup = new $.Event("keyup");
-
-                    if (!sendDummyKeydown) {
-                        keydown.keyCode = keycode;
-                        if (modifier == keyCode.CONTROL)
-                            keydown.ctrlKey = true;
-                    }
-                    trigger(elem, keydown);
-                    if (!keydown.defaultPrevented) {
-                        keypress.keyCode = keycode;
-                        if (modifier == keyCode.CONTROL)
-                            keypress.ctrlKey = true;
-                        trigger(elem, keypress);
-                        //if (!keypress.isDefaultPrevented()) {
-                        keyup.keyCode = keycode;
-                        if (modifier == keyCode.CONTROL)
-                            keyup.ctrlKey = true;
-                        trigger(elem, keyup);
-                        //}
-                    }
-                }
-        }
-    }
-    if (!('append' in $.fn)) {
-        $.fn.append = function (child) {
-            var input = this.nodeName ? this : this[0];
-            input.insertAdjacentHTML('beforeend', child);
-        };
-    }
-    if (!('remove' in $.fn)) {
-        $.fn.remove = function () {
-            var input = this.nodeName ? this : this[0];
-            if (input !== undefined && input !== null) {
-                input.parentElement.removeChild(input);
-                input = undefined;
-            }
-        };
-    }
-    if (!('val' in $.fn)) {
-        $.fn.val = function (value) {
-            var input = this.nodeName ? this : this[0];
-            if (value !== undefined) {
-                if (input.inputmask) {
-                    input.inputmask._valueSet(value, true);
-                    $(input).trigger("setvalue");
-                } else input.value = value;
-            }
-
-            return input.value;
-        };
-    }
-
-    $.fn.Type = function (inputStr) {
-        var input = this.nodeName ? this : this[0],
-            $input = $(input);
-        $.each(inputStr.split(''), function (ndx, lmnt) {
-            $input.SendKey(lmnt);
-        });
-    }
-
-    $.fn.paste = function (inputStr) {
-        var input = this.nodeName ? this : this[0],
-            $input = $(input);
-        if (window.clipboardData) {
-            window.clipboardData.setData('Text', inputStr);
-        } else {
-            $.data($input, "clipboard", inputStr);
-            window.clipboardData = {
-                getData: function () {
-                    window.clipboardData = undefined;
-                    return $.data($input, "clipboard");
-                }
-            }
-        }
-
-        $input.trigger('paste');
-    }
-
-    $.fn.input = function (inputStr, caretBegin, caretEnd) {
-        var input = this.nodeName ? this : this[0];
-        input.inputmask.__valueSet.call(input, inputStr);
-        if (caretBegin !== undefined)
-            $.caret(input, caretBegin, caretEnd);
-        $(input).trigger("input");
-    }
+	$.caret = function (input, begin, end) {
+		input = input.nodeName ? input : input[0];
+		input.focus();
+		var range;
+		if (typeof begin === "number") {
+			end = (typeof end == "number") ? end : begin;
+			// if (!$(input).is(":visible")) {
+			// 	return;
+			// }
+
+			if (input.setSelectionRange) {
+				input.setSelectionRange(begin, end);
+			} else if (window.getSelection) {
+				range = document.createRange();
+				if (input.firstChild === undefined) {
+					var textNode = document.createTextNode("");
+					input.appendChild(textNode);
+				}
+				range.setStart(input.firstChild, begin < input.value.length ? begin : input.value.length);
+				range.setEnd(input.firstChild, end < input.value.length ? end : input.value.length);
+				range.collapse(true);
+				var sel = window.getSelection();
+				sel.removeAllRanges();
+				sel.addRange(range);
+				//input.focus();
+			} else if (input.createTextRange) {
+				range = input.createTextRange();
+				range.collapse(true);
+				range.moveEnd("character", end);
+				range.moveStart("character", begin);
+				range.select();
+
+			}
+		} else {
+			if ("selectionStart" in input && "selectionEnd" in input) {
+				begin = input.selectionStart;
+				end = input.selectionEnd;
+			} else if (window.getSelection) {
+				range = window.getSelection().getRangeAt(0);
+				if (range.commonAncestorContainer.parentNode === input || range.commonAncestorContainer === input) {
+					begin = range.startOffset;
+					end = range.endOffset;
+				}
+			} else if (document.selection && document.selection.createRange) {
+				range = document.selection.createRange();
+				begin = 0 - range.duplicate().moveStart("character", -100000);
+				end = begin + range.text.length;
+			}
+			/*eslint-disable consistent-return */
+			return {
+				"begin": begin,
+				"end": end
+			};
+			/*eslint-enable consistent-return */
+		}
+	};
+	$.fn = $.fn || $.prototype;
+	$.fn.SendKey = function (keycode, modifier) {
+		var elem = this.nodeName ? this : this[0], origCode = keycode;
+		elem.type = "text"; //force textinput to support caret fn
+
+
+		function trigger(elem, evnt) {
+			elem.focus();
+			if ($ === window.jQuery) {
+				$(elem).trigger(evnt);
+			} else {
+				if (document.createEvent) {
+					elem.dispatchEvent(evnt);
+				} else {
+					elem.fireEvent("on" + evnt.eventType, evnt);
+				}
+			}
+		}
+
+		var sendDummyKeydown = false;
+		if (Object.prototype.toString.call(keycode) == "[object String]") {
+			keycode = keycode.charCodeAt(0);
+			sendDummyKeydown = true;
+		}
+
+		switch (keycode) {
+			case keyCode.LEFT:
+				if (modifier == undefined) {
+					var pos = $.caret(this);
+					$.caret(this, 0);
+					break;
+				}
+			case keyCode.END:
+				if (modifier == undefined) {
+					var pos = $.caret(this);
+					$.caret(this, elem.value.length);
+					break;
+				}
+			case keyCode.LEFT:
+				if (modifier == undefined) {
+					var pos = $.caret(this);
+					$.caret(this, pos.begin - 1);
+					break;
+				}
+			case keyCode.RIGHT:
+				if (modifier == undefined) {
+					var pos = $.caret(this);
+					$.caret(this, pos.end + 1);
+					break;
+				}
+			default:
+				if ((window.Inputmask && window.Inputmask.prototype.defaults.inputEventOnly === true) ||
+					(elem.inputmask && elem.inputmask.opts.inputEventOnly === true)) {
+					var input = new $.Event("input"),
+						currentValue = (elem.inputmask && elem.inputmask.__valueGet) ? elem.inputmask.__valueGet.call(elem) : elem.value,
+						caretPos = $.caret(elem), caretOffset = 0;
+
+					// console.log("initial " + currentValue);
+					// console.log(caretPos);
+
+					var front = currentValue.substring(0, caretPos.begin),
+						back = currentValue.substring(caretPos.end),
+						newValue = currentValue;
+
+					switch (keycode) {
+						case keyCode.BACKSPACE:
+							if (caretPos.begin === caretPos.end) {
+								front = front.substr(0, front.length - 1);
+							}
+							newValue = front + back;
+							break;
+						case keyCode.DELETE:
+							if (origCode !== ".") {
+								if (caretPos.begin === caretPos.end) {
+									back = back.slice(1);
+								}
+								newValue = front + back;
+								break;
+							}
+						default:
+							newValue = front + String.fromCharCode(keycode) + back;
+							caretOffset = front.length > 0 ? 1 : 0;
+							break;
+					}
+
+					if (elem.inputmask && elem.inputmask.__valueSet) {
+						elem.inputmask.__valueSet.call(elem, newValue);
+					} else {
+						elem.value = newValue;
+					}
+					$.caret(elem, (newValue.length - back.length));
+					trigger(elem, input);
+				} else {
+					var keydown = new $.Event("keydown"),
+						keypress = new $.Event("keypress"),
+						keyup = new $.Event("keyup");
+
+					if (!sendDummyKeydown) {
+						keydown.keyCode = keycode;
+						if (modifier == keyCode.CONTROL) {
+							keydown.ctrlKey = true;
+						}
+					}
+					trigger(elem, keydown);
+					if (!keydown.defaultPrevented) {
+						keypress.keyCode = keycode;
+						if (modifier == keyCode.CONTROL) {
+							keypress.ctrlKey = true;
+						}
+						trigger(elem, keypress);
+						//if (!keypress.isDefaultPrevented()) {
+						keyup.keyCode = keycode;
+						if (modifier == keyCode.CONTROL) {
+							keyup.ctrlKey = true;
+						}
+						trigger(elem, keyup);
+						//}
+					}
+				}
+		}
+	};
+	if (!("append" in $.fn)) {
+		$.fn.append = function (child) {
+			var input = this.nodeName ? this : this[0];
+			input.insertAdjacentHTML("beforeend", child);
+		};
+	}
+	if (!("remove" in $.fn)) {
+		$.fn.remove = function () {
+			var input = this.nodeName ? this : this[0];
+			if (input !== undefined && input !== null) {
+				input.parentElement.removeChild(input);
+				input = undefined;
+			}
+		};
+	}
+	if (!("val" in $.fn)) {
+		$.fn.val = function (value) {
+			var input = this.nodeName ? this : this[0];
+			if (value !== undefined) {
+				if (input.inputmask) {
+					input.inputmask._valueSet(value, true);
+					$(input).trigger("setvalue");
+				} else {
+					input.value = value;
+				}
+			}
+
+			return input.value;
+		};
+	}
+
+	$.fn.Type = function (inputStr) {
+		var input = this.nodeName ? this : this[0],
+			$input = $(input);
+		$.each(inputStr.split(""), function (ndx, lmnt) {
+			$input.SendKey(lmnt);
+		});
+	};
+
+	$.fn.paste = function (inputStr) {
+		var input = this.nodeName ? this : this[0],
+			$input = $(input);
+		if (window.clipboardData) {
+			window.clipboardData.setData("Text", inputStr);
+		} else {
+			$.data($input, "clipboard", inputStr);
+			window.clipboardData = {
+				getData: function () {
+					window.clipboardData = undefined;
+					return $.data($input, "clipboard");
+				}
+			};
+		}
+
+		$input.trigger("paste");
+	};
+
+	$.fn.input = function (inputStr, caretBegin, caretEnd) {
+		var input = this.nodeName ? this : this[0];
+		input.inputmask.__valueSet.call(input, inputStr);
+		if (caretBegin !== undefined) {
+			$.caret(input, caretBegin, caretEnd);
+		}
+		$(input).trigger("input");
+	};
 };

+ 21 - 0
qunit/tests_date.js

@@ -805,4 +805,25 @@ export default function (qunit, Inputmask) {
 
 		assert.equal(testmask.value, "2H:MM:ss", "Result " + testmask.value);
 	});
+
+	qunit.test("HH:MM:ss - Autocorrect, backspace all type 2 - #2194", function (assert) {
+		var $fixture = $("#qunit-fixture");
+		$fixture.append("<input type=\"text\" id=\"testmask\" />");
+		var testmask = document.getElementById("testmask");
+		Inputmask("datetime", {
+			inputFormat: "HH:MM:ss"
+		}).mask(testmask);
+
+		testmask.focus();
+		$("#testmask").Type("24");
+		$.caret(testmask, "HH:".length);
+		$("#testmask").SendKey(keyCode.BACKSPACE);
+		$("#testmask").SendKey(keyCode.BACKSPACE);
+		$("#testmask").SendKey(keyCode.BACKSPACE);
+		$("#testmask").SendKey(keyCode.BACKSPACE);
+		$("#testmask").Type("2");
+
+
+		assert.equal(testmask.value, "2H:MM:ss", "Result " + testmask.value);
+	});
 };

+ 87 - 18
qunit/tests_numeric.js

@@ -2091,11 +2091,11 @@ export default function (qunit, Inputmask) {
 		$fixture.append("<input type=\"text\" id=\"testmask\" />");
 		var testmask = document.getElementById("testmask");
 		Inputmask("decimal", {
-			alias: 'decimal',
-			placeholder: '',
+			alias: "decimal",
+			placeholder: "",
 			digits: 7,
 			digitsOptional: true,
-			groupSeparator: ' ',
+			groupSeparator: " ",
 			autoGroup: true,
 			showMaskOnHover: false,
 			showMaskOnFocus: false,
@@ -2116,7 +2116,7 @@ export default function (qunit, Inputmask) {
 		}).mask(testmask);
 		testmask.focus();
 		$.caret(testmask, 3);
-		setTimeout(function() {
+		setTimeout(function () {
 			$(testmask).Type("1234.56");
 			$("#testmask").SendKey(keyCode.BACKSPACE);
 			$("#testmask").SendKey(keyCode.BACKSPACE);
@@ -2124,7 +2124,7 @@ export default function (qunit, Inputmask) {
 			$("#testmask").SendKey(keyCode.BACKSPACE);
 			assert.equal(testmask.value, "$ 123.00", "Result " + testmask.value);
 			done();
-		},0);
+		}, 0);
 	});
 
 	qunit.test("digitsOptional: true + suffix not working as expected. can't enter decimal digits #2212", function (assert) {
@@ -2132,27 +2132,27 @@ export default function (qunit, Inputmask) {
 		$fixture.append("<input type=\"text\" id=\"testmask\"/>");
 		var testmask = document.getElementById("testmask");
 		Inputmask({
-			'alias': 'decimal',
-			'groupSeparator': ',',
-			'suffix': " EUR",
-			'digits': 2,
-			'digitsOptional': true, // BUG
+			"alias": "decimal",
+			"groupSeparator": ",",
+			"suffix": " EUR",
+			"digits": 2,
+			"digitsOptional": true, // BUG
 		}).mask(testmask);
 		testmask.focus();
-		setTimeout(function() {
+		setTimeout(function () {
 			$(testmask).Type("1234.56");
 			assert.equal(testmask.value, "1,234.56 EUR", "Result " + testmask.value);
 			done();
-		},0);
+		}, 0);
 	});
 
-	qunit.test("test add new number at the end with positionCaretOnClick: select, using END key", function (assert) {
+	qunit.test("initial 12345 - add new number at the end with positionCaretOnClick: select, using END key - #2223", function (assert) {
 		var done = assert.async(),
 			$fixture = $("#qunit-fixture");
-		$fixture.append('<input type="text" id="testmask" value="123.45" />');
+		$fixture.append("<input type=\"text\" id=\"testmask\" value=\"12345\" />");
 		var testmask = document.getElementById("testmask");
 		Inputmask("decimal", {
-			positionCaretOnClick: 'select',
+			positionCaretOnClick: "select",
 			radixFocus: true,
 			digitsOptional: false,
 			digits: 2,
@@ -2160,11 +2160,80 @@ export default function (qunit, Inputmask) {
 			numericInput: true,
 		}).mask(testmask);
 		testmask.focus();
-		$("#testmask").SendKey(keyCode.END);
-		$(testmask).Type("6");
+		$("#testmask").trigger("click");
 		setTimeout(function () {
+			$("#testmask").SendKey(keyCode.END);
+			$(testmask).Type("6");
 			assert.equal(testmask.value, "1234.56", "Result " + testmask.value);
 			done();
-		}, 5);
+		}, 0);
+	});
+
+	qunit.test("initial 123.45 - add new number at the end with positionCaretOnClick: select, using END key - #2223", function (assert) {
+		var done = assert.async(),
+			$fixture = $("#qunit-fixture");
+		$fixture.append("<input type=\"text\" id=\"testmask\" value=\"123.45\" />");
+		var testmask = document.getElementById("testmask");
+		Inputmask("decimal", {
+			positionCaretOnClick: "select",
+			radixFocus: true,
+			digitsOptional: false,
+			digits: 2,
+			_radixDance: true,
+			numericInput: true,
+		}).mask(testmask);
+		testmask.focus();
+		$("#testmask").trigger("click");
+		setTimeout(function () {
+			$("#testmask").SendKey(keyCode.END);
+			$(testmask).Type("6");
+
+			assert.equal(testmask.value, "1234.56", "Result " + testmask.value);
+			done();
+		}, 0);
+	});
+	qunit.test("initial 12345 - add new number at the end with positionCaretOnClick: select, using RIGHT key - #2223", function (assert) {
+		var done = assert.async(),
+			$fixture = $("#qunit-fixture");
+		$fixture.append("<input type=\"text\" id=\"testmask\" value=\"12345\" />");
+		var testmask = document.getElementById("testmask");
+		Inputmask("decimal", {
+			positionCaretOnClick: "select",
+			radixFocus: true,
+			digitsOptional: false,
+			digits: 2,
+			_radixDance: true,
+			numericInput: true,
+		}).mask(testmask);
+		testmask.focus();
+		$("#testmask").trigger("click");
+		setTimeout(function () {
+			$("#testmask").SendKey(keyCode.RIGHT);
+			$(testmask).Type("6");
+			assert.equal(testmask.value, "1234.56", "Result " + testmask.value);
+			done();
+		}, 0);
+	});
+	qunit.test("initial 123.45 - add new number at the end with positionCaretOnClick: select, using RIGHT key - #2223", function (assert) {
+		var done = assert.async(),
+			$fixture = $("#qunit-fixture");
+		$fixture.append("<input type=\"text\" id=\"testmask\" value=\"123.45\" />");
+		var testmask = document.getElementById("testmask");
+		Inputmask("decimal", {
+			positionCaretOnClick: "select",
+			radixFocus: true,
+			digitsOptional: false,
+			digits: 2,
+			_radixDance: true,
+			numericInput: true,
+		}).mask(testmask);
+		testmask.focus();
+		$("#testmask").trigger("click");
+		setTimeout(function () {
+			$("#testmask").SendKey(keyCode.RIGHT);
+			$(testmask).Type("6");
+			assert.equal(testmask.value, "1234.56", "Result " + testmask.value);
+			done();
+		}, 0);
 	});
 };