Browse Source

tweak for insertmode false

Robin Herbots 11 years ago
parent
commit
815c4b121e
2 changed files with 17 additions and 2 deletions
  1. 2 2
      js/jquery.inputmask.js
  2. 15 0
      qunit/tests.js

+ 2 - 2
js/jquery.inputmask.js

@@ -430,7 +430,7 @@
                             }
                             }
                             if (ndx != 0) {
                             if (ndx != 0) {
                                 getMaskSet()["buffer"] = undefined;
                                 getMaskSet()["buffer"] = undefined;
-                                getMaskSet()["tests"] = {}; //clear the tests cache
+                                getMaskSet()["tests"] = {}; //clear the tests cache todo optimize
                             }
                             }
                             setValidPosition(validatedPos, $.extend({}, tst, { "input": elem }), strict);
                             setValidPosition(validatedPos, $.extend({}, tst, { "input": elem }), strict);
                             return false; //break from $.each
                             return false; //break from $.each
@@ -442,7 +442,7 @@
 
 
                 var maskPos = pos;
                 var maskPos = pos;
                 var result = _isValid(maskPos, c, strict);
                 var result = _isValid(maskPos, c, strict);
-                if (!strict && result === false && !isMask(maskPos)) { //does the input match on a further position?
+                if (!strict && (opts.insertMode || getMaskSet()["validPositions"][seekNext(pos)] == undefined) && result === false && !isMask(maskPos)) { //does the input match on a further position?
                     for (var nPos = maskPos + 1, snPos = seekNext(maskPos) ; nPos <= snPos; nPos++) {
                     for (var nPos = maskPos + 1, snPos = seekNext(maskPos) ; nPos <= snPos; nPos++) {
                         result = _isValid(nPos, c, strict);
                         result = _isValid(nPos, c, strict);
                         if (result !== false) {
                         if (result !== false) {

+ 15 - 0
qunit/tests.js

@@ -235,6 +235,21 @@ test("inputmask(\"(999)999-9999\") - ruslanfedoseenko mask", function () {
 
 
     $("#testmask").remove();
     $("#testmask").remove();
 });
 });
+test("inputmask(\"(999)999-9999\") - insert false - ruslanfedoseenko mask", function () {
+    var $fixture = $( "#qunit-fixture" );
+	$fixture.append('<input type="text" id="testmask" />');
+    $("#testmask").inputmask("(999)999-9999", { insertMode: false});
+
+    $("#testmask")[0].focus();
+
+    $("#testmask").val("9999999999");
+    caret($("#testmask"), 4, 5);
+    $("#testmask").Type("7");
+
+    equal($("#testmask").val(), "(999)999-9999", "Result " + $("#testmask").val());
+
+    $("#testmask").remove();
+});
 
 
 test("inputmask(\"\") - empty mask - andywolk", function () {
 test("inputmask(\"\") - empty mask - andywolk", function () {
     var $fixture = $( "#qunit-fixture" );
     var $fixture = $( "#qunit-fixture" );