Browse Source

fix switching between masks after delete or backspace

Robin Herbots 12 years ago
parent
commit
54889a5c28

+ 1 - 1
build.properties

@@ -7,7 +7,7 @@ distdir = dist
 
 build.major = 2
 build.minor = 3
-build.revision = 62
+build.revision = 63
 
 target = jquery.inputmask.bundle.js
 target.min = jquery.inputmask.bundle.min.js

+ 1 - 1
component.json

@@ -1,6 +1,6 @@
 {
     "name": "jquery.inputmask",
-    "version": "2.3.62",
+    "version": "2.3.63",
     "main": "./dist/jquery.inputmask.bundle.js",
     "dependencies": {
         "jquery": ">=1.7"

BIN
dist/jQuery.InputMask.2.3.62.nupkg


BIN
dist/jQuery.InputMask.2.3.63.nupkg


+ 14 - 9
dist/jquery.inputmask.bundle.js

@@ -3,7 +3,7 @@
 * http://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2013 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 2.3.62
+* Version: 2.3.63
 */
 
 (function ($) {
@@ -790,9 +790,13 @@
 
                 ;
 
-                function clearBuffer(buffer, start, end) {
+                function clearBuffer(buffer, start, end, stripNomasks) {
                     for (var i = start, maskL = getMaskLength() ; i < end && i < maskL; i++) {
-                        setBufferElement(buffer, i, getBufferElement(getActiveBufferTemplate().slice(), i, true));
+                        if (stripNomasks === true) {
+                            if (!isMask(i))
+                                setBufferElement(buffer, i, "");
+                        } else
+                            setBufferElement(buffer, i, getBufferElement(getActiveBufferTemplate().slice(), i, true));
                     }
                 }
 
@@ -1391,7 +1395,8 @@
                             if (!isSelection) pos.begin = newpos;
                         }
                         var firstMaskPos = seekNext(-1);
-                        checkVal(input, false, true, getActiveBuffer());
+                        clearBuffer(getActiveBuffer(), pos.begin, pos.end, true);
+                        checkVal(input, false, false, getActiveBuffer());
                         if (getActiveMaskSet()['lastValidPosition'] < firstMaskPos) {
                             getActiveMaskSet()["lastValidPosition"] = -1;
                             getActiveMaskSet()["p"] = firstMaskPos;
@@ -1630,7 +1635,7 @@ Input Mask plugin extensions
 http://github.com/RobinHerbots/jquery.inputmask
 Copyright (c) 2010 - 2013 Robin Herbots
 Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-Version: 2.3.62
+Version: 2.3.63
 
 Optional extensions on the jquery.inputmask base
 */
@@ -1732,7 +1737,7 @@ Input Mask plugin extensions
 http://github.com/RobinHerbots/jquery.inputmask
 Copyright (c) 2010 - 2012 Robin Herbots
 Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-Version: 2.3.62
+Version: 2.3.63
 
 Optional extensions on the jquery.inputmask base
 */
@@ -2216,7 +2221,7 @@ Input Mask plugin extensions
 http://github.com/RobinHerbots/jquery.inputmask
 Copyright (c) 2010 - 2013 Robin Herbots
 Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-Version: 2.3.62
+Version: 2.3.63
 
 Optional extensions on the jquery.inputmask base
 */
@@ -2393,7 +2398,7 @@ Input Mask plugin extensions
 http://github.com/RobinHerbots/jquery.inputmask
 Copyright (c) 2010 - 2013 Robin Herbots
 Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-Version: 2.3.62
+Version: 2.3.63
 
 Regex extensions on the jquery.inputmask base
 Allows for using regular expressions as a mask
@@ -2563,7 +2568,7 @@ Input Mask plugin extensions
 http://github.com/RobinHerbots/jquery.inputmask
 Copyright (c) 2010 - 2013 Robin Herbots
 Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-Version: 2.3.62
+Version: 2.3.63
 
 Phone extension.
 When using this extension make sure you specify the correct url to get the masks

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


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


+ 1 - 1
jquery.inputmask.jquery.json

@@ -8,7 +8,7 @@
 		"inputmask",
 		"mask"
     ],
-    "version": "2.3.62",
+    "version": "2.3.63",
     "author": {
         "name": "Robin Herbots",
         "url": "http://github.com/RobinHerbots/jquery.inputmask"

+ 8 - 3
js/jquery.inputmask.js

@@ -790,9 +790,13 @@
 
                 ;
 
-                function clearBuffer(buffer, start, end) {
+                function clearBuffer(buffer, start, end, stripNomasks) {
                     for (var i = start, maskL = getMaskLength() ; i < end && i < maskL; i++) {
-                        setBufferElement(buffer, i, getBufferElement(getActiveBufferTemplate().slice(), i, true));
+                        if (stripNomasks === true) {
+                            if (!isMask(i))
+                                setBufferElement(buffer, i, "");
+                        } else
+                            setBufferElement(buffer, i, getBufferElement(getActiveBufferTemplate().slice(), i, true));
                     }
                 }
 
@@ -1391,7 +1395,8 @@
                             if (!isSelection) pos.begin = newpos;
                         }
                         var firstMaskPos = seekNext(-1);
-                        checkVal(input, false, true, getActiveBuffer());
+                        clearBuffer(getActiveBuffer(), pos.begin, pos.end, true);
+                        checkVal(input, false, false, getActiveBuffer());
                         if (getActiveMaskSet()['lastValidPosition'] < firstMaskPos) {
                             getActiveMaskSet()["lastValidPosition"] = -1;
                             getActiveMaskSet()["p"] = firstMaskPos;

+ 2 - 2
qunit/tests.js

@@ -1585,8 +1585,8 @@ asyncTest("inputmask(\"phone\") - Brazil switch", 1, function () {
         $("#testmask").SendKey(keyCodes.BACKSPACE);
         $("#testmask").SendKey(keyCodes.BACKSPACE);
         $("#testmask").SendKey(keyCodes.BACKSPACE);
-        $("#testmask").SendKey(keyCodes.BACKSPACE);
-        $("#testmask").Type("51234");
+		$("#testmask").SendKey(keyCodes.BACKSPACE);
+        $("#testmask").Type("451234");
         equal($("#testmask").val(), "+55-12-12345-1234", "Result " + $("#testmask").val());
         start();
         $("#testmask").remove();