Robin Herbots 11 years ago
parent
commit
5cfe5280cc

+ 3 - 8
dist/inputmask/jquery.inputmask.js

@@ -202,13 +202,8 @@
                 if (baseOnInput === !0 && getMaskSet().validPositions[pos]) {
                     var validPos = getMaskSet().validPositions[pos];
                     test = validPos.match, ndxIntlzr = validPos.locator.slice(), maskTemplate.push(includeInput === !0 ? validPos.input : getPlaceholder(pos, test));
-                } else {
-                    if (minimalPos > pos) {
-                        var testPositions = getTests(pos, ndxIntlzr, pos - 1);
-                        testPos = testPositions[0];
-                    } else testPos = getTestTemplate(pos, ndxIntlzr, pos - 1);
-                    test = testPos.match, ndxIntlzr = testPos.locator.slice(), maskTemplate.push(getPlaceholder(pos, test));
-                }
+                } else testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), test = testPos.match, 
+                ndxIntlzr = testPos.locator.slice(), maskTemplate.push(getPlaceholder(pos, test));
                 pos++;
             } while ((void 0 == maxLength || maxLength > pos - 1) && null != test.fn || null == test.fn && "" != test.def || minimalPos >= pos);
             return maskTemplate.pop(), maskTemplate;
@@ -772,7 +767,7 @@
                 var pend = pos.end;
                 pos.end = pos.begin, pos.begin = pend;
             }
-            if (k == $.inputmask.keyCode.BACKSPACE && pos.end - pos.begin <= 1 ? pos.begin = seekPrevious(pos.begin) : k == $.inputmask.keyCode.DELETE && pos.begin == pos.end && pos.end++, 
+            if (k == $.inputmask.keyCode.BACKSPACE && (pos.end - pos.begin < 1 || 0 == opts.insertMode) ? pos.begin = seekPrevious(pos.begin) : k == $.inputmask.keyCode.DELETE && pos.begin == pos.end && pos.end++, 
             stripValidPositions(pos.begin, pos.end, !1, strict), strict !== !0) {
                 generalize();
                 var lvp = getLastValidPosition(pos.begin);

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


+ 3 - 8
dist/jquery.inputmask.bundle.js

@@ -200,13 +200,8 @@
                 if (baseOnInput === !0 && getMaskSet().validPositions[pos]) {
                     var validPos = getMaskSet().validPositions[pos];
                     test = validPos.match, ndxIntlzr = validPos.locator.slice(), maskTemplate.push(includeInput === !0 ? validPos.input : getPlaceholder(pos, test));
-                } else {
-                    if (minimalPos > pos) {
-                        var testPositions = getTests(pos, ndxIntlzr, pos - 1);
-                        testPos = testPositions[0];
-                    } else testPos = getTestTemplate(pos, ndxIntlzr, pos - 1);
-                    test = testPos.match, ndxIntlzr = testPos.locator.slice(), maskTemplate.push(getPlaceholder(pos, test));
-                }
+                } else testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), test = testPos.match, 
+                ndxIntlzr = testPos.locator.slice(), maskTemplate.push(getPlaceholder(pos, test));
                 pos++;
             } while ((void 0 == maxLength || maxLength > pos - 1) && null != test.fn || null == test.fn && "" != test.def || minimalPos >= pos);
             return maskTemplate.pop(), maskTemplate;
@@ -770,7 +765,7 @@
                 var pend = pos.end;
                 pos.end = pos.begin, pos.begin = pend;
             }
-            if (k == $.inputmask.keyCode.BACKSPACE && pos.end - pos.begin <= 1 ? pos.begin = seekPrevious(pos.begin) : k == $.inputmask.keyCode.DELETE && pos.begin == pos.end && pos.end++, 
+            if (k == $.inputmask.keyCode.BACKSPACE && (pos.end - pos.begin < 1 || 0 == opts.insertMode) ? pos.begin = seekPrevious(pos.begin) : k == $.inputmask.keyCode.DELETE && pos.begin == pos.end && pos.end++, 
             stripValidPositions(pos.begin, pos.end, !1, strict), strict !== !0) {
                 generalize();
                 var lvp = getLastValidPosition(pos.begin);

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


+ 2 - 7
js/jquery.inputmask.js

@@ -346,12 +346,7 @@
                         ndxIntlzr = validPos["locator"].slice();
                         maskTemplate.push(includeInput === true ? validPos["input"] : getPlaceholder(pos, test));
                     } else {
-                        if (minimalPos > pos) {
-                            var testPositions = getTests(pos, ndxIntlzr, pos - 1);
-                            testPos = testPositions[0];
-                        } else {
-                            testPos = getTestTemplate(pos, ndxIntlzr, pos - 1);
-                        }
+                        testPos = getTestTemplate(pos, ndxIntlzr, pos - 1);
                         test = testPos["match"];
                         ndxIntlzr = testPos["locator"].slice();
                         maskTemplate.push(getPlaceholder(pos, test));
@@ -1348,7 +1343,7 @@
                     }
                 }
 
-                if (k == $.inputmask.keyCode.BACKSPACE && pos.end - pos.begin <= 1)
+                if (k == $.inputmask.keyCode.BACKSPACE && (pos.end - pos.begin < 1 || opts.insertMode == false))
                     pos.begin = seekPrevious(pos.begin);
                 else if (k == $.inputmask.keyCode.DELETE && pos.begin == pos.end)
                     pos.end++;

+ 16 - 0
qunit/tests_base.js

@@ -292,6 +292,22 @@ test("Delete selection with non-masks", function () {
     $("#testmask").remove();
 });
 
+test("Selection and backspace also deletes previous - kenaku", function () {
+    var $fixture = $("#qunit-fixture");
+    $fixture.append('<input type="text" id="testmask" />');
+    $("#testmask").inputmask("999 99 99 999");
+
+    $("#testmask")[0].focus();
+    $("#testmask").Type("1234567890");
+
+    $.caret($("#testmask"), 2, 3);
+    $("#testmask").SendKey($.inputmask.keyCode.BACKSPACE);
+    equal($("#testmask").val(), "124 56 78 90_", "Result " + $("#testmask").val());
+
+    $("#testmask").remove();
+});
+
+
 module("Non-greedy masks");
 test("inputmask(\"*\", { greedy: false, repeat: \"*\" }) - replace cd with 1", function () {
     var $fixture = $("#qunit-fixture");

+ 20 - 13
qunit/tests_numeric.js

@@ -707,7 +707,7 @@ test("decimal alias set value with val() - kochelmonster", function () {
     $("#testmask").remove();
 });
 
-test("inputmask(\"decimal\") - value=\"123.1\" blur digitsoptional", function () {
+asyncTest("inputmask(\"decimal\") - value=\"123.1\" blur digitsoptional", function () {
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $("#testmask").inputmask("decimal", { digits: 3 });
@@ -715,12 +715,14 @@ test("inputmask(\"decimal\") - value=\"123.1\" blur digitsoptional", function ()
     $("#testmask")[0].focus();
     $("#testmask").Type("123.1");
     $("#testmask").blur();
-
-    equal($("#testmask").val(), "123.1", "Result " + $("#testmask").val());
-    $("#testmask").remove();
+    setTimeout(function () {
+        start();
+        equal($("#testmask").val(), "123.1", "Result " + $("#testmask").val());
+        $("#testmask").remove();
+    }, 0);
 });
 
-test("inputmask(\"decimal\") - value=\"123.1\" blur", function () {
+asyncTest("inputmask(\"decimal\") - value=\"123.1\" blur", function () {
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $("#testmask").inputmask("decimal", { digits: 3, digitsOptional: false });
@@ -728,9 +730,11 @@ test("inputmask(\"decimal\") - value=\"123.1\" blur", function () {
     $("#testmask")[0].focus();
     $("#testmask").Type("123.1");
     $("#testmask").blur();
-
-    equal($("#testmask").val(), "123.100", "Result " + $("#testmask").val());
-    $("#testmask").remove();
+    setTimeout(function () {
+        start();
+        equal($("#testmask").val(), "123.100", "Result " + $("#testmask").val());
+        $("#testmask").remove();
+    }, 0);
 });
 
 asyncTest("currency alias - 200000 => replace 2 to 3", function () {
@@ -750,7 +754,7 @@ asyncTest("currency alias - 200000 => replace 2 to 3", function () {
     }, 5);
 });
 
-test("inputmask(\"integer\") - -0 - laxmikantG", function () {
+asyncTest("inputmask(\"integer\") - -0 - laxmikantG", function () {
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $("#testmask").inputmask("integer", { placeholder: "0" });
@@ -758,8 +762,11 @@ test("inputmask(\"integer\") - -0 - laxmikantG", function () {
     $("#testmask")[0].focus();
     $("#testmask").Type("-0");
     $("#testmask").blur();
-    equal($("#testmask").val(), "", "Result " + $("#testmask").val());
-    $("#testmask").remove();
+    setTimeout(function () {
+        start();
+        equal($("#testmask").val(), "", "Result " + $("#testmask").val());
+        $("#testmask").remove();
+    }, 0);
 });
 
 test("inputmask(\"integer\") - 123- - laxmikantG", function () {
@@ -1131,7 +1138,7 @@ asyncTest("currency alias - 123.56 => select integer press 1 - babupca", functio
     $("#testmask").click();
     setTimeout(function () {
         $("#testmask").Type("123.56");
-        $.caret($("#testmask"), 0, 7);
+        $.caret($("#testmask"), 0, 5);
         $("#testmask").SendKey("1");
         start();
         equal($("#testmask")[0]._valueGet(), "$ 1.56", "Result " + $("#testmask")[0]._valueGet());
@@ -1148,7 +1155,7 @@ asyncTest("currency alias - 123.56 => select integer press 1 - babupca", functio
     $("#testmask").click();
     setTimeout(function () {
         $("#testmask").Type("123.56");
-        $.caret($("#testmask"), 0, 7);
+        $.caret($("#testmask"), 0, 4);
         $("#testmask").SendKey("1");
         start();
         equal($("#testmask")[0]._valueGet(), "$1.56", "Result " + $("#testmask")[0]._valueGet());