浏览代码

fix delete with keepstatic #604

Robin Herbots 11 年之前
父节点
当前提交
2f8903d009

文件差异内容过多而无法显示
+ 1 - 1
dist/inputmask/jquery.inputmask.date.extensions.js


文件差异内容过多而无法显示
+ 2 - 2
dist/inputmask/jquery.inputmask.js


文件差异内容过多而无法显示
+ 1 - 1
dist/inputmask/jquery.inputmask.numeric.extensions.js


文件差异内容过多而无法显示
+ 2 - 2
dist/jquery.inputmask.bundle.js


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

@@ -77,7 +77,7 @@ Optional extensions on the jquery.inputmask base
             },
             onKeyUp: function (e, buffer, caretPos, opts) {
                 var $input = $(this);
-                if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) {
+                if (e.ctrlKey && e.keyCode == $.inputmask.keyCode.RIGHT) {
                     var today = new Date();
                     $input.val(today.getDate().toString() + (today.getMonth() + 1).toString() + today.getFullYear().toString());
                 }
@@ -272,7 +272,7 @@ Optional extensions on the jquery.inputmask base
             leapday: "02/29/",
             onKeyUp: function (e, buffer, caretPos, opts) {
                 var $input = $(this);
-                if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) {
+                if (e.ctrlKey && e.keyCode == $.inputmask.keyCode.RIGHT) {
                     var today = new Date();
                     $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString());
                 }
@@ -285,7 +285,7 @@ Optional extensions on the jquery.inputmask base
             leapday: "/02/29",
             onKeyUp: function (e, buffer, caretPos, opts) {
                 var $input = $(this);
-                if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) {
+                if (e.ctrlKey && e.keyCode == $.inputmask.keyCode.RIGHT) {
                     var today = new Date();
                     $input.val(today.getFullYear().toString() + (today.getMonth() + 1).toString() + today.getDate().toString());
                 }

+ 51 - 26
js/jquery.inputmask.js

@@ -765,22 +765,22 @@
                 function alternate(pos, c, strict, fromSetValid) {
                     if (opts.keepStatic) {
                         var validPsClone = $.extend(true, {}, getMaskSet()["validPositions"]),
-                            firstAlt,
+                            lastAlt,
                             alternation;
                         //find last alternation
-                        for (firstAlt = getLastValidPosition() ; firstAlt >= 0; firstAlt--) {
-                            if (getMaskSet()["validPositions"][firstAlt] && getMaskSet()["validPositions"][firstAlt].alternation != undefined) {
-                                alternation = getMaskSet()["validPositions"][firstAlt].alternation;
+                        for (lastAlt = getLastValidPosition() ; lastAlt >= 0; lastAlt--) {
+                            if (getMaskSet()["validPositions"][lastAlt] && getMaskSet()["validPositions"][lastAlt].alternation != undefined) {
+                                alternation = getMaskSet()["validPositions"][lastAlt].alternation;
                                 break;
                             }
                         }
                         if (alternation != undefined) {
                             //find first decision making position
                             for (var decisionPos in getMaskSet()["validPositions"]) {
-                                if (parseInt(decisionPos) > parseInt(firstAlt) && getMaskSet()["validPositions"][decisionPos].alternation === undefined) {
+                                if (parseInt(decisionPos) > parseInt(lastAlt) && getMaskSet()["validPositions"][decisionPos].alternation === undefined) {
                                     var altPos = getMaskSet()["validPositions"][decisionPos],
                                         decisionTaker = altPos.locator[alternation],
-                                        altNdxs = getMaskSet()["validPositions"][firstAlt].locator[alternation].split(",");
+                                        altNdxs = getMaskSet()["validPositions"][lastAlt].locator[alternation].split(",");
 
                                     for (var mndx = 0; mndx < altNdxs.length; mndx++) {
                                         if (decisionTaker < altNdxs[mndx]) {
@@ -1202,11 +1202,34 @@
                 }
             }
             function handleRemove(input, k, pos) {
+                function generalize() {
+                    if (opts.keepStatic) {
+                        var validInputs = [],
+                          lastAlt;
+                        //find last alternation
+                        for (lastAlt = getLastValidPosition() ; lastAlt >= 0; lastAlt--) {
+                            if (getMaskSet()["validPositions"][lastAlt]) {
+                                if (getMaskSet()["validPositions"][lastAlt].alternation != undefined) {
+                                    break;
+                                }
+                                validInputs.push(getMaskSet()["validPositions"][lastAlt].input);
+                                delete getMaskSet()["validPositions"][lastAlt];
+                            }
+                        }
+                        if (lastAlt > 0) {
+                            while (validInputs.length > 0) {
+                                getMaskSet()["p"] = seekNext(getLastValidPosition());
+                                keypressEvent.call(input, undefined, true, validInputs.pop().charCodeAt(0), false, false, getMaskSet()["p"]);
+                            }
+                        }
+                    }
+                }
+
                 if (opts.numericInput || isRTL) {
-                    if (k == opts.keyCode.BACKSPACE)
-                        k = opts.keyCode.DELETE;
-                    else if (k == opts.keyCode.DELETE)
-                        k = opts.keyCode.BACKSPACE;
+                    if (k == $.inputmask.keyCode.BACKSPACE)
+                        k = $.inputmask.keyCode.DELETE;
+                    else if (k == $.inputmask.keyCode.DELETE)
+                        k = $.inputmask.keyCode.BACKSPACE;
 
                     if (isRTL) {
                         var pend = pos.end;
@@ -1215,12 +1238,14 @@
                     }
                 }
 
-                if (k == opts.keyCode.BACKSPACE && pos.end - pos.begin <= 1)
+                if (k == $.inputmask.keyCode.BACKSPACE && pos.end - pos.begin <= 1)
                     pos.begin = seekPrevious(pos.begin);
-                else if (k == opts.keyCode.DELETE && pos.begin == pos.end)
+                else if (k == $.inputmask.keyCode.DELETE && pos.begin == pos.end)
                     pos.end++;
 
                 stripValidPositions(pos.begin, pos.end);
+                generalize(); //revert the alternation
+
                 var firstMaskedPos = getLastValidPosition(pos.begin);
                 if (firstMaskedPos < pos.begin) {
                     getMaskSet()["p"] = seekNext(firstMaskedPos);
@@ -1246,7 +1271,7 @@
                 var input = this, $input = $(input), k = e.keyCode, pos = caret(input);
 
                 //backspace, delete, and escape get special treatment
-                if (k == opts.keyCode.BACKSPACE || k == opts.keyCode.DELETE || (iphone && k == 127) || e.ctrlKey && k == 88) { //backspace/delete
+                if (k == $.inputmask.keyCode.BACKSPACE || k == $.inputmask.keyCode.DELETE || (iphone && k == 127) || e.ctrlKey && k == 88) { //backspace/delete
                     e.preventDefault(); //stop default action but allow propagation
                     if (k == 88) valueOnFocus = getBuffer().join('');
                     handleRemove(input, k, pos);
@@ -1257,27 +1282,27 @@
                     if (opts.showTooltip) { //update tooltip
                         $input.prop("title", getMaskSet()["mask"]);
                     }
-                } else if (k == opts.keyCode.END || k == opts.keyCode.PAGE_DOWN) { //when END or PAGE_DOWN pressed set position at lastmatch
+                } else if (k == $.inputmask.keyCode.END || k == $.inputmask.keyCode.PAGE_DOWN) { //when END or PAGE_DOWN pressed set position at lastmatch
                     setTimeout(function () {
                         var caretPos = seekNext(getLastValidPosition());
                         if (!opts.insertMode && caretPos == getMaskLength() && !e.shiftKey) caretPos--;
                         caret(input, e.shiftKey ? pos.begin : caretPos, caretPos);
                     }, 0);
-                } else if ((k == opts.keyCode.HOME && !e.shiftKey) || k == opts.keyCode.PAGE_UP) { //Home or page_up
+                } else if ((k == $.inputmask.keyCode.HOME && !e.shiftKey) || k == $.inputmask.keyCode.PAGE_UP) { //Home or page_up
                     caret(input, 0, e.shiftKey ? pos.begin : 0);
-                } else if (k == opts.keyCode.ESCAPE || (k == 90 && e.ctrlKey)) { //escape && undo
+                } else if (k == $.inputmask.keyCode.ESCAPE || (k == 90 && e.ctrlKey)) { //escape && undo
                     checkVal(input, true, false, valueOnFocus.split(''));
                     $input.click();
-                } else if (k == opts.keyCode.INSERT && !(e.shiftKey || e.ctrlKey)) { //insert
+                } else if (k == $.inputmask.keyCode.INSERT && !(e.shiftKey || e.ctrlKey)) { //insert
                     opts.insertMode = !opts.insertMode;
                     caret(input, !opts.insertMode && pos.begin == getMaskLength() ? pos.begin - 1 : pos.begin);
                 } else if (opts.insertMode == false && !e.shiftKey) {
-                    if (k == opts.keyCode.RIGHT) {
+                    if (k == $.inputmask.keyCode.RIGHT) {
                         setTimeout(function () {
                             var caretPos = caret(input);
                             caret(input, caretPos.begin);
                         }, 0);
-                    } else if (k == opts.keyCode.LEFT) {
+                    } else if (k == $.inputmask.keyCode.LEFT) {
                         setTimeout(function () {
                             var caretPos = caret(input);
                             caret(input, isRTL ? caretPos.begin + 1 : caretPos.begin - 1);
@@ -1312,7 +1337,7 @@
                         var isSlctn = isSelection(pos.begin, pos.end);
                         if (isSlctn) {
                             getMaskSet()["undoPositions"] = $.extend(true, {}, getMaskSet()["validPositions"]); //init undobuffer for recovery when not valid
-                            handleRemove(input, opts.keyCode.DELETE, pos);
+                            handleRemove(input, $.inputmask.keyCode.DELETE, pos);
                             if (!opts.insertMode) { //preserve some space
                                 opts.insertMode = !opts.insertMode;
                                 setValidPosition(pos.begin, strict);
@@ -1385,7 +1410,7 @@
                 var currentCaretPos = caret(input);
                 var keyupResult = opts.onKeyUp.call(this, e, buffer, currentCaretPos.begin, opts);
                 handleOnKeyResult(input, keyupResult, currentCaretPos);
-                if (k == opts.keyCode.TAB && opts.showMaskOnFocus) {
+                if (k == $.inputmask.keyCode.TAB && opts.showMaskOnFocus) {
                     if ($input.hasClass('focus-inputmask') && input._valueGet().length == 0) {
                         resetMaskSet();
                         buffer = getBuffer();
@@ -1444,7 +1469,7 @@
                 if ((getBuffer().length - currentValue.length) == 1 && currentValue.charAt(caretPos.begin) != getBuffer()[caretPos.begin]
                     && currentValue.charAt(caretPos.begin + 1) != getBuffer()[caretPos.begin]
                     && !isMask(caretPos.begin)) {
-                    e.keyCode = opts.keyCode.BACKSPACE;
+                    e.keyCode = $.inputmask.keyCode.BACKSPACE;
                     keydownEvent.call(input, e);
                 }
                 e.preventDefault();
@@ -1855,14 +1880,14 @@
                         cardinality: 1
                     }
                 },
-                keyCode: {
-                    ALT: 18, BACKSPACE: 8, CAPS_LOCK: 20, COMMA: 188, COMMAND: 91, COMMAND_LEFT: 91, COMMAND_RIGHT: 93, CONTROL: 17, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, INSERT: 45, LEFT: 37, MENU: 93, NUMPAD_ADD: 107, NUMPAD_DECIMAL: 110, NUMPAD_DIVIDE: 111, NUMPAD_ENTER: 108,
-                    NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SHIFT: 16, SPACE: 32, TAB: 9, UP: 38, WINDOWS: 91
-                },
                 //specify keyCodes which should not be considered in the keypress event, otherwise the preventDefault will stop their default behavior especially in FF
                 ignorables: [8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123],
                 isComplete: undefined //override for isComplete - args => buffer, opts - return true || false
             },
+            keyCode: {
+                ALT: 18, BACKSPACE: 8, CAPS_LOCK: 20, COMMA: 188, COMMAND: 91, COMMAND_LEFT: 91, COMMAND_RIGHT: 93, CONTROL: 17, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, INSERT: 45, LEFT: 37, MENU: 93, NUMPAD_ADD: 107, NUMPAD_DECIMAL: 110, NUMPAD_DIVIDE: 111, NUMPAD_ENTER: 108,
+                NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SHIFT: 16, SPACE: 32, TAB: 9, UP: 38, WINDOWS: 91
+            },
             masksCache: {},
             escapeRegex: function (str) {
                 var specials = ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'];

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

@@ -102,7 +102,7 @@ Optional extensions on the jquery.inputmask base
                 return { pos: newPos, "refreshFromBuffer": needsRefresh };
             },
             onKeyDown: function (e, buffer, caretPos, opts) {
-                if (e.keyCode == opts.keyCode.TAB && opts.placeholder.charAt(0) != "0") {
+                if (e.keyCode == $.inputmask.keyCode.TAB && opts.placeholder.charAt(0) != "0") {
                     var radixPosition = $.inArray(opts.radixPoint, buffer);
                     if (radixPosition != -1 && isFinite(opts.digits)) {
                         for (var i = 1; i <= opts.digits; i++) {
@@ -110,7 +110,7 @@ Optional extensions on the jquery.inputmask base
                         }
                         return { "refreshFromBuffer": { start: ++radixPosition, end: radixPosition + opts.digits } };
                     }
-                } else if (opts.autoGroup && (e.keyCode == opts.keyCode.DELETE || e.keyCode == opts.keyCode.BACKSPACE)) {
+                } else if (opts.autoGroup && (e.keyCode == $.inputmask.keyCode.DELETE || e.keyCode == $.inputmask.keyCode.BACKSPACE)) {
                     var rslt = opts.postFormat(buffer, caretPos - 1, true, opts);
                     rslt.caret = rslt.pos + 1;
                     return rslt;

+ 5 - 9
qunit/simulator.js

@@ -1,8 +1,4 @@
 (function ($) {
-    $.keyCodes = {
-        ALT: 18, BACKSPACE: 8, CAPS_LOCK: 20, COMMA: 188, COMMAND: 91, COMMAND_LEFT: 91, COMMAND_RIGHT: 93, CONTROL: 17, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, INSERT: 45, LEFT: 37, MENU: 93, NUMPAD_ADD: 107, NUMPAD_DECIMAL: 110, NUMPAD_DIVIDE: 111, NUMPAD_ENTER: 108,
-        NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SHIFT: 16, SPACE: 32, TAB: 9, UP: 38, WINDOWS: 91
-    }
     $.caret = function (input, begin, end) {
         var npt = input.jquery && input.length > 0 ? input[0] : input, range;
         if (typeof begin == 'number') {
@@ -44,14 +40,14 @@
         }
 
         switch (keyCode) {
-            case $.keyCodes.LEFT: {
+            case $.inputmask.keyCode.LEFT: {
                 if (modifier == undefined) {
                     var pos = $.caret(this);
                     $.caret(this, pos.begin - 1);
                     break;
                 }
             }
-            case $.keyCodes.RIGHT: {
+            case $.inputmask.keyCode.RIGHT: {
                 if (modifier == undefined) {
                     var pos = $.caret(this);
                     $.caret(this, pos.begin + 1);
@@ -65,18 +61,18 @@
 
                 if (!sendDummyKeydown) {
                     keydown.keyCode = keyCode;
-                    if (modifier == $.keyCodes.CONTROL)
+                    if (modifier == $.inputmask.keyCode.CONTROL)
                         keydown.ctrlKey = true;
                 }
                 $(this).trigger(keydown);
                 if (!keydown.isDefaultPrevented()) {
                     keypress.keyCode = keyCode;
-                    if (modifier == $.keyCodes.CONTROL)
+                    if (modifier == $.inputmask.keyCode.CONTROL)
                         keypress.ctrlKey = true;
                     $(this).trigger(keypress);
                     if (!keypress.isDefaultPrevented()) {
                         keyup.keyCode = keyCode;
-                        if (modifier == $.keyCodes.CONTROL)
+                        if (modifier == $.inputmask.keyCode.CONTROL)
                             keyup.ctrlKey = true;
                         $(this).trigger(keyup);
                     }

+ 17 - 17
qunit/tests_base.js

@@ -41,7 +41,7 @@ test("inputmask(\"999.999.999\") + backspace", function () {
     $("#testmask")[0].focus();
 
     $("#testmask").Type("123");
-    $("#testmask").SendKey($.keyCodes.BACKSPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
     equal($("#testmask").val(), "12_.___.___", "Result " + $("#testmask").val());
 
     $("#testmask").remove();
@@ -104,11 +104,11 @@ test("inputmask(\"999.999.999\") - delete 2nd with backspace, continue the mask"
     $("#testmask")[0].focus();
 
     $("#testmask").Type("123");
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.BACKSPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
     $("#testmask").Type("4");
-    $("#testmask").SendKey($.keyCodes.RIGHT);
+    $("#testmask").SendKey($.inputmask.keyCode.RIGHT);
     $("#testmask").Type("56");
 
     equal($("#testmask").val(), "143.56_.___", "Result " + $("#testmask").val());
@@ -126,12 +126,12 @@ test("inputmask(\"999.999.999\") - delete 2nd with delete, continue the mask", f
     $("#testmask").SendKey(49);
     $("#testmask").SendKey(50);
     $("#testmask").SendKey(51);
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
     $("#testmask").SendKey(52);
-    $("#testmask").SendKey($.keyCodes.RIGHT);
+    $("#testmask").SendKey($.inputmask.keyCode.RIGHT);
     $("#testmask").SendKey(53);
     $("#testmask").SendKey(54);
 
@@ -149,7 +149,7 @@ test("inputmask(\"999.999.999\") - delete selection start with nomask", function
 
     $("#testmask").Type("123456789");
     $.caret($("#testmask"), 3, 7);
-    $("#testmask").SendKey($.keyCodes.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
 
     equal($("#testmask").val(), "123.789.___", "Result " + $("#testmask").val());
 
@@ -165,7 +165,7 @@ test("inputmask(\"999.999.999\") - backspace selection start with nomask", funct
 
     $("#testmask").Type("123456789");
     $.caret($("#testmask"), 3, 7);
-    $("#testmask").SendKey($.keyCodes.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
 
     equal($("#testmask").val(), "123.789.___", "Result " + $("#testmask").val());
 
@@ -196,7 +196,7 @@ test("inputmask(\"*****\")", function () {
     $("#testmask")[0].focus();
 
     $("#testmask").Type("abe");
-    $("#testmask").SendKey($.keyCodes.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
     $("#testmask").Type("cd");
 
     equal($("#testmask").val(), "abcde", "Result " + $("#testmask").val());
@@ -213,7 +213,7 @@ test("inputmask(\"d/m/y\")", function () {
 
     $("#testmask").Type("23031973");
     $.caret($("#testmask"), 5);
-    $("#testmask").SendKey($.keyCodes.BACKSPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
 
     equal($("#testmask").val(), "23/0_/1973", "Result " + $("#testmask").val());
 
@@ -283,7 +283,7 @@ test("Delete selection with non-masks", function () {
     $("#testmask").Type("9999999999");
 
     $.caret($("#testmask"), 8, 11);
-    $("#testmask").SendKey($.keyCodes.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
     equal($("#testmask").val(), "(999)999-99__", "Result " + $("#testmask").val());
 
     $("#testmask").remove();
@@ -539,7 +539,7 @@ test("inputmask(\"6703 9999 9999 9999 9\") ~ type \"6703 1234 5678 9012 3\" + ba
     $("#testmask").inputmask("6703 9999 9999 9999 9");
     $("#testmask")[0].focus();
     $("#testmask").Type("1234567890123");
-    $("#testmask").SendKey($.keyCodes.BACKSPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
 
     equal($("#testmask").val(), "6703 1234 5678 9012 _", "Result " + $("#testmask").val());
 
@@ -554,7 +554,7 @@ asyncTest("inputmask(\"6703 9999 9999 9999 9\") ~ type \"6703670367036\" + backs
     $("#testmask").click();
     setTimeout(function () {
         $("#testmask").Type("6703670367036");
-        $("#testmask").SendKey($.keyCodes.BACKSPACE);
+        $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
         equal($("#testmask").val(), "6703 6703 6703 6703 _", "Result " + $("#testmask").val());
         start();
         $("#testmask").remove();

+ 6 - 6
qunit/tests_date.js

@@ -128,7 +128,7 @@ test("inputmask(\"dd/mm/yyyy\") - input CTRL RIGHT", function () {
     $("#testmask").inputmask("dd/mm/yyyy");
 
     $("#testmask")[0].focus();
-    $("#testmask").SendKey($.keyCodes.RIGHT, $.keyCodes.CONTROL);
+    $("#testmask").SendKey($.inputmask.keyCode.RIGHT, $.inputmask.keyCode.CONTROL);
     ok($("#testmask").val() != "dd/mm/yyyy", "Result " + $("#testmask").val());
 
     $("#testmask").remove();
@@ -148,10 +148,10 @@ test("inputmask(\"dd/mm/yyyy\") - input 2331973 BACKSPACE x4 2013", function ()
     $("#testmask").SendKey("9");
     $("#testmask").SendKey("7");
     $("#testmask").SendKey("3");
-    $("#testmask").SendKey($.keyCodes.BACKSPACE);
-    $("#testmask").SendKey($.keyCodes.BACKSPACE);
-    $("#testmask").SendKey($.keyCodes.BACKSPACE);
-    $("#testmask").SendKey($.keyCodes.BACKSPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
     $("#testmask").SendKey("2");
     $("#testmask").SendKey("0");
     $("#testmask").SendKey("1");
@@ -248,7 +248,7 @@ test("inputmask(\"dd/mm/yyyy\") - input 2331973 - remove 23", function () {
     $("#testmask")[0].focus();
     $("#testmask").Type("23031973");
     $.caret($("#testmask"), 0, 2);
-    $("#testmask").SendKey($.keyCodes.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
 
     equal($("#testmask").val(), "dd/03/1973", "Result " + $("#testmask").val());
 

+ 13 - 0
qunit/tests_keepStatic.js

@@ -45,4 +45,17 @@ test("{ mask: \"+55-99-9999|(99)-9999\", keepStatic: true } type 12123451234", f
     equal(document.getElementById("testmask")._valueGet(), "+55-12-12345-1234", "Result " + document.getElementById("testmask")._valueGet());
 
     $("#testmask").remove();
+});
+
+test("{ mask: [\"+55-99-9999-9999\", \"+55-99-99999-9999\", ], keepStatic: true } - type 12123451234 + backspace", function () {
+    var $fixture = $("#qunit-fixture");
+    $fixture.append('<input type="text" id="testmask" />');
+    $("#testmask").inputmask({ mask: ["+55-99-9999-9999", "+55-99-99999-9999"], keepStatic: true });
+    $("#testmask")[0].focus();
+    $("#testmask").Type("12123451234");
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
+
+    equal(document.getElementById("testmask")._valueGet(), "+55-12-1234-5123", "Result " + document.getElementById("testmask")._valueGet());
+
+    $("#testmask").remove();
 });

+ 41 - 41
qunit/tests_numeric.js

@@ -96,7 +96,7 @@ test("numeric placeholder 0 prefix € type 0.123 - backspace - Webunity", funct
 
     $("#testmask")[0].focus();
     $("#testmask").Type("0.123");
-    $("#testmask").SendKey($.keyCodes.BACKSPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
 
     equal($("#testmask").val(), "€ 0.12", "Result " + $("#testmask").val());
     $("#testmask").remove();
@@ -316,10 +316,10 @@ test("inputmask(\"decimal\", { autoGroup: true, groupSeparator: \",\", decimalPr
     $("#testmask")[0].focus();
 
     $("#testmask").Type("12345.123");
-    $("#testmask").SendKey($.keyCodes.BACKSPACE);
-    $("#testmask").SendKey($.keyCodes.BACKSPACE);
-    $("#testmask").SendKey($.keyCodes.BACKSPACE);
-    $("#testmask").SendKey($.keyCodes.BACKSPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
 
     equal($("#testmask").val(), "12,345", "Result " + $("#testmask").val());
     $("#testmask").remove();
@@ -332,12 +332,12 @@ test("inputmask(\"decimal\", { autoGroup: true, groupSeparator: \",\" }\") - inp
     $("#testmask")[0].focus();
 
     $("#testmask").Type("12345.123");
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.DELETE);
-    $("#testmask").SendKey($.keyCodes.DELETE);
-    $("#testmask").SendKey($.keyCodes.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
     $("#testmask").Type(".789");
 
     equal($("#testmask").val(), "12,345.789", "Result " + $("#testmask").val());
@@ -367,14 +367,14 @@ test("inputmask(\"decimal\", { autoGroup: false, groupSeparator: \",\", decimalP
 
     $("#testmask").Type("12345.123");
     //$("#testmask").click();
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.DELETE);
-    $("#testmask").SendKey($.keyCodes.DELETE);
-    $("#testmask").SendKey($.keyCodes.DELETE);
-    $("#testmask").SendKey($.keyCodes.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
 
     equal($("#testmask").val(), "12345", "Result " + $("#testmask").val());
     $("#testmask").remove();
@@ -388,14 +388,14 @@ test("inputmask(\"decimal\", { autoGroup: false, groupSeparator: \",\", decimalP
 
     $("#testmask").Type("12345.123");
     //$("#testmask").click();
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.DELETE);
-    $("#testmask").SendKey($.keyCodes.DELETE);
-    $("#testmask").SendKey($.keyCodes.DELETE);
-    $("#testmask").SendKey($.keyCodes.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
 
     equal($("#testmask").val(), "12345", "Result " + $("#testmask").val());
     $("#testmask").remove();
@@ -408,14 +408,14 @@ test("inputmask(\"decimal\", { autoGroup: false, groupSeparator: \",\", decimalP
     $("#testmask")[0].focus();
 
     $("#testmask").Type("12345.123");
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.LEFT);
-    $("#testmask").SendKey($.keyCodes.DELETE);
-    $("#testmask").SendKey($.keyCodes.DELETE);
-    $("#testmask").SendKey($.keyCodes.DELETE);
-    $("#testmask").SendKey($.keyCodes.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.LEFT);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
     $("#testmask").Type(".789");
 
     equal($("#testmask").val(), "12345.789", "Result " + $("#testmask").val());
@@ -555,9 +555,9 @@ test("inputmask(\"decimal\", { digits: 2 }) - value=\"123\" - RomeroMsk", functi
     $("#testmask").Type("123");
     $.caret($("#testmask"), 0, 3);
     $("#testmask").SendKey(",,..");
-    $("#testmask").SendKey($.keyCodes.RIGHT);
-    $("#testmask").SendKey($.keyCodes.RIGHT); //needed in test
-    $("#testmask").SendKey($.keyCodes.RIGHT); //needed in test
+    $("#testmask").SendKey($.inputmask.keyCode.RIGHT);
+    $("#testmask").SendKey($.inputmask.keyCode.RIGHT); //needed in test
+    $("#testmask").SendKey($.inputmask.keyCode.RIGHT); //needed in test
     $("#testmask").Type("45");
 
     equal($("#testmask").val(), "12345", "Result " + $("#testmask").val());
@@ -600,7 +600,7 @@ test("decimal alias with groupseparator delete - YoussefTaghlabi", function () {
     $("#testmask")[0].focus();
     $("#testmask").Type("1234567");
     $.caret($("#testmask"), 0);
-    $("#testmask").SendKey($.keyCodes.DELETE);
+    $("#testmask").SendKey($.inputmask.keyCode.DELETE);
 
     equal($("#testmask").val(), "234,567", "Result " + $("#testmask").val());
     $("#testmask").remove();
@@ -622,7 +622,7 @@ test("decimal alias with groupseparator backspace - YoussefTaghlabi", function (
     $("#testmask")[0].focus();
     $("#testmask").Type("1234567");
     $.caret($("#testmask"), 1);
-    $("#testmask").SendKey($.keyCodes.BACKSPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
 
     equal($("#testmask").val(), "234,567", "Result " + $("#testmask").val());
     $("#testmask").remove();
@@ -714,7 +714,7 @@ test("inputmask(\"decimal\") - value=\"123.1\" tab out", function () {
 
     $("#testmask")[0].focus();
     $("#testmask").Type("123.1");
-    $("#testmask").SendKey($.keyCodes.TAB);
+    $("#testmask").SendKey($.inputmask.keyCode.TAB);
 
     equal($("#testmask").val(), "123.100", "Result " + $("#testmask").val());
     $("#testmask").remove();

+ 11 - 11
qunit/tests_numericinput.js

@@ -9,12 +9,12 @@ asyncTest("inputmask(\"999.999.999\") - delete 2nd with backspace, continue the
         $("#testmask").SendKey("1");
         $("#testmask").SendKey("2");
         $("#testmask").SendKey("3");
-        $("#testmask").SendKey($.keyCodes.RIGHT);
-        $("#testmask").SendKey($.keyCodes.RIGHT);
-        $("#testmask").SendKey($.keyCodes.RIGHT);
-        $("#testmask").SendKey($.keyCodes.BACKSPACE);
+        $("#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($.keyCodes.LEFT);
+        $("#testmask").SendKey($.inputmask.keyCode.LEFT);
         $("#testmask").SendKey("5");
         $("#testmask").SendKey("6");
         start();
@@ -34,11 +34,11 @@ asyncTest("inputmask(\"999.999.999\") - delete 2nd with delete, continue the mas
         $("#testmask").SendKey("1");
         $("#testmask").SendKey("2");
         $("#testmask").SendKey("3");
-        $("#testmask").SendKey($.keyCodes.RIGHT);
-        $("#testmask").SendKey($.keyCodes.RIGHT);
-        $("#testmask").SendKey($.keyCodes.DELETE);
+        $("#testmask").SendKey($.inputmask.keyCode.RIGHT);
+        $("#testmask").SendKey($.inputmask.keyCode.RIGHT);
+        $("#testmask").SendKey($.inputmask.keyCode.DELETE);
         $("#testmask").SendKey("4");
-        $("#testmask").SendKey($.keyCodes.LEFT);
+        $("#testmask").SendKey($.inputmask.keyCode.LEFT);
         $("#testmask").SendKey("5");
         $("#testmask").SendKey("6");
         start();
@@ -89,7 +89,7 @@ asyncTest("inputmask(\"999-999-999\") - replace selection with backspace", funct
     setTimeout(function () {
         $("#testmask").Type("123456789");
         $.caret($("#testmask"), 4, 7);
-        $("#testmask").SendKey($.keyCodes.BACKSPACE);
+        $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
         $("#testmask").Type("5");
         start();
         equal($("#testmask").val(), "__9-875-321", "Result " + $("#testmask").val());
@@ -107,7 +107,7 @@ asyncTest("inputmask(\"999-999-999\") - replace selection - with delete", functi
     setTimeout(function () {
         $("#testmask").Type("123456789");
         $.caret($("#testmask"), 4, 7);
-        $("#testmask").SendKey($.keyCodes.DELETE);
+        $("#testmask").SendKey($.inputmask.keyCode.DELETE);
         $("#testmask").Type("5");
         start();
         equal($("#testmask").val(), "__9-875-321", "Result " + $("#testmask").val());

+ 1 - 1
qunit/tests_optional.js

@@ -91,7 +91,7 @@ test("inputmask(\"9[9][9] 999[9] 9999\") - input 123123 space 1234 - vipink70",
 
     $("#testmask")[0].focus();
     $("#testmask").Type("123123");
-    $("#testmask").SendKey($.keyCodes.SPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.SPACE);
     $("#testmask").Type("1234");
     equal($("#testmask").val(), "123 123 1234", "Result " + $("#testmask").val());
 

+ 5 - 5
qunit/tests_phone.js

@@ -83,11 +83,11 @@ asyncTest("inputmask(\"phone\") - Brazil switch", 1, function () {
 
     $("#testmask")[0].focus();
     $.caret($("#testmask"), $("#testmask")[0].value.length); //for FF
-    $("#testmask").SendKey($.keyCodes.BACKSPACE);
-    $("#testmask").SendKey($.keyCodes.BACKSPACE);
-    $("#testmask").SendKey($.keyCodes.BACKSPACE);
-    $("#testmask").SendKey($.keyCodes.BACKSPACE);
-    $("#testmask").SendKey($.keyCodes.BACKSPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
     $("#testmask").Type("451234");
     setTimeout(function () {
         equal($("#testmask").val(), "+55-12-12345-1234", "Result " + $("#testmask").val());

+ 1 - 1
qunit/tests_regex.js

@@ -280,7 +280,7 @@ test("inputmask(\"Regex\", {regex: \"[а-яА-Я\\s]*\"}) - type space - SilentI
     $("#testmask").inputmask("Regex", { regex: "[а-яА-Я\\s]*" });
 
     $("#testmask")[0].focus();
-    $("#testmask").SendKey($.keyCodes.SPACE);
+    $("#testmask").SendKey($.inputmask.keyCode.SPACE);
 
     equal($("#testmask").val(), " ", "Result " + $("#testmask").val());