Browse Source

jquery.inputmask 3.1.53

Robin Herbots 11 years ago
parent
commit
3cc92e177a

+ 1 - 1
bower.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "jquery.inputmask",
   "name": "jquery.inputmask",
-  "version": "3.1.52",
+  "version": "3.1.53",
   "main": [
   "main": [
     "./dist/inputmask/jquery.inputmask.js",
     "./dist/inputmask/jquery.inputmask.js",
     "./dist/inputmask/jquery.inputmask.extensions.js",
     "./dist/inputmask/jquery.inputmask.extensions.js",

+ 1 - 1
dist/inputmask/jquery.inputmask.date.extensions.js

@@ -3,7 +3,7 @@
 * http://github.com/RobinHerbots/jquery.inputmask
 * http://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2015 Robin Herbots
 * Copyright (c) 2010 - 2015 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.1.52
+* Version: 3.1.53
 */
 */
 !function(factory) {
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery", "./jquery.inputmask" ], factory) : factory(jQuery);
     "function" == typeof define && define.amd ? define([ "jquery", "./jquery.inputmask" ], factory) : factory(jQuery);

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


+ 1 - 1
dist/inputmask/jquery.inputmask.extensions.js

@@ -3,7 +3,7 @@
 * http://github.com/RobinHerbots/jquery.inputmask
 * http://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2015 Robin Herbots
 * Copyright (c) 2010 - 2015 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.1.52
+* Version: 3.1.53
 */
 */
 !function(factory) {
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery", "./jquery.inputmask" ], factory) : factory(jQuery);
     "function" == typeof define && define.amd ? define([ "jquery", "./jquery.inputmask" ], factory) : factory(jQuery);

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


+ 10 - 9
dist/inputmask/jquery.inputmask.js

@@ -3,7 +3,7 @@
 * http://github.com/RobinHerbots/jquery.inputmask
 * http://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2015 Robin Herbots
 * Copyright (c) 2010 - 2015 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.1.52
+* Version: 3.1.53
 */
 */
 !function(factory) {
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery" ], factory) : factory(jQuery);
     "function" == typeof define && define.amd ? define([ "jquery" ], factory) : factory(jQuery);
@@ -253,13 +253,14 @@
             return !0;
             return !0;
         }
         }
         function stripValidPositions(start, end, nocheck) {
         function stripValidPositions(start, end, nocheck) {
-            var i, startPos = start;
+            var i, s, startPos = start;
             void 0 != getMaskSet().validPositions[start] && getMaskSet().validPositions[start].input == opts.radixPoint && (end++, 
             void 0 != getMaskSet().validPositions[start] && getMaskSet().validPositions[start].input == opts.radixPoint && (end++, 
             startPos++);
             startPos++);
-            var endPos = end;
-            for (i = startPos; end > i; i++) void 0 != getMaskSet().validPositions[i] && (0 != opts.canClearPosition(getMaskSet(), i, getLastValidPosition(), opts) || nocheck === !0 ? delete getMaskSet().validPositions[i] : endPos--);
-            for (i = startPos; i <= getLastValidPosition(); ) {
-                var t = getMaskSet().validPositions[i], s = getMaskSet().validPositions[startPos];
+            for (i = startPos; end > i; i++) void 0 != getMaskSet().validPositions[i] && (nocheck === !0 || 0 != opts.canClearPosition(getMaskSet(), i, getLastValidPosition(), opts)) && delete getMaskSet().validPositions[i];
+            for (resetMaskSet(!0), i = startPos + 1; i <= getLastValidPosition(); ) {
+                for (;void 0 != (s = getMaskSet().validPositions[startPos]); ) startPos++;
+                startPos > i && (i = startPos + 1);
+                var t = getMaskSet().validPositions[i];
                 void 0 != t && void 0 == s ? (positionCanMatchDefinition(startPos, t.match.def) && isValid(startPos, t.input, !0) !== !1 && (delete getMaskSet().validPositions[i], 
                 void 0 != t && void 0 == s ? (positionCanMatchDefinition(startPos, t.match.def) && isValid(startPos, t.input, !0) !== !1 && (delete getMaskSet().validPositions[i], 
                 i++), startPos++) : i++;
                 i++), startPos++) : i++;
             }
             }
@@ -749,7 +750,7 @@
                 };
                 };
             }
             }
         }
         }
-        function handleRemove(input, k, pos) {
+        function handleRemove(input, k, pos, noCheck) {
             function generalize() {
             function generalize() {
                 if (opts.keepStatic) {
                 if (opts.keepStatic) {
                     resetMaskSet(!0);
                     resetMaskSet(!0);
@@ -771,7 +772,7 @@
                 pos.end = pos.begin, pos.begin = pend;
                 pos.end = pos.begin, pos.begin = pend;
             }
             }
             k == $.inputmask.keyCode.BACKSPACE && pos.end - pos.begin <= 1 ? pos.begin = seekPrevious(pos.begin) : k == $.inputmask.keyCode.DELETE && pos.begin == pos.end && pos.end++, 
             k == $.inputmask.keyCode.BACKSPACE && pos.end - pos.begin <= 1 ? pos.begin = seekPrevious(pos.begin) : k == $.inputmask.keyCode.DELETE && pos.begin == pos.end && pos.end++, 
-            stripValidPositions(pos.begin, pos.end), generalize();
+            stripValidPositions(pos.begin, pos.end, noCheck), generalize();
             var lvp = getLastValidPosition(pos.begin);
             var lvp = getLastValidPosition(pos.begin);
             lvp < pos.begin ? (-1 == lvp && resetMaskSet(), getMaskSet().p = seekNext(lvp)) : getMaskSet().p = pos.begin;
             lvp < pos.begin ? (-1 == lvp && resetMaskSet(), getMaskSet().p = seekNext(lvp)) : getMaskSet().p = pos.begin;
         }
         }
@@ -803,7 +804,7 @@
                     end: ndx
                     end: ndx
                 } : caret(input), c = String.fromCharCode(k), isSlctn = isSelection(pos.begin, pos.end);
                 } : caret(input), c = String.fromCharCode(k), isSlctn = isSelection(pos.begin, pos.end);
                 isSlctn && (getMaskSet().undoPositions = $.extend(!0, {}, getMaskSet().validPositions), 
                 isSlctn && (getMaskSet().undoPositions = $.extend(!0, {}, getMaskSet().validPositions), 
-                handleRemove(input, $.inputmask.keyCode.DELETE, pos), opts.insertMode || (opts.insertMode = !opts.insertMode, 
+                handleRemove(input, $.inputmask.keyCode.DELETE, pos, !0), opts.insertMode || (opts.insertMode = !opts.insertMode, 
                 setValidPosition(pos.begin, strict), opts.insertMode = !opts.insertMode), isSlctn = !opts.multi), 
                 setValidPosition(pos.begin, strict), opts.insertMode = !opts.insertMode), isSlctn = !opts.multi), 
                 getMaskSet().writeOutBuffer = !0;
                 getMaskSet().writeOutBuffer = !0;
                 var p = isRTL && !isSlctn ? pos.end : pos.begin, valResult = isValid(p, c, strict);
                 var p = isRTL && !isSlctn ? pos.end : pos.begin, valResult = isValid(p, c, strict);

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


+ 5 - 4
dist/inputmask/jquery.inputmask.numeric.extensions.js

@@ -3,7 +3,7 @@
 * http://github.com/RobinHerbots/jquery.inputmask
 * http://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2015 Robin Herbots
 * Copyright (c) 2010 - 2015 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.1.52
+* Version: 3.1.53
 */
 */
 !function(factory) {
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery", "./jquery.inputmask" ], factory) : factory(jQuery);
     "function" == typeof define && define.amd ? define([ "jquery", "./jquery.inputmask" ], factory) : factory(jQuery);
@@ -224,8 +224,10 @@
                 initialValue;
                 initialValue;
             },
             },
             canClearPosition: function(maskset, position, lvp, opts) {
             canClearPosition: function(maskset, position, lvp, opts) {
-                var positionInput = maskset.validPositions[position].input, canClear = positionInput != opts.radixPoint || position == lvp;
+                var positionInput = maskset.validPositions[position].input, canClear = positionInput != opts.radixPoint && isFinite(positionInput) || position == lvp;
                 if (canClear && isFinite(positionInput)) {
                 if (canClear && isFinite(positionInput)) {
+                    for (var pos = position + 1; maskset.validPositions[pos] && (maskset.validPositions[pos].input == opts.groupSeparator || "0" == maskset.validPositions[pos].input); ) delete maskset.validPositions[pos], 
+                    pos++;
                     var buffer = [];
                     var buffer = [];
                     for (var vp in maskset.validPositions) buffer.push(maskset.validPositions[vp].input);
                     for (var vp in maskset.validPositions) buffer.push(maskset.validPositions[vp].input);
                     var matchRslt = buffer.join("").match(opts.regex.integerNPart(opts)), radixPosition = $.inArray(opts.radixPoint, maskset.buffer);
                     var matchRslt = buffer.join("").match(opts.regex.integerNPart(opts)), radixPosition = $.inArray(opts.radixPoint, maskset.buffer);
@@ -235,8 +237,7 @@
                         canClear = !1);
                         canClear = !1);
                     }
                     }
                 }
                 }
-                return canClear && maskset.validPositions[position + 1] && maskset.validPositions[position + 1].input == opts.groupSeparator && delete maskset.validPositions[position + 1], 
-                canClear;
+                return canClear;
             }
             }
         },
         },
         currency: {
         currency: {

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


+ 1 - 1
dist/inputmask/jquery.inputmask.phone.extensions.js

@@ -3,7 +3,7 @@
 * http://github.com/RobinHerbots/jquery.inputmask
 * http://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2015 Robin Herbots
 * Copyright (c) 2010 - 2015 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.1.52
+* Version: 3.1.53
 */
 */
 !function(factory) {
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery", "./jquery.inputmask" ], factory) : factory(jQuery);
     "function" == typeof define && define.amd ? define([ "jquery", "./jquery.inputmask" ], factory) : factory(jQuery);

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


+ 1 - 1
dist/inputmask/jquery.inputmask.regex.extensions.js

@@ -3,7 +3,7 @@
 * http://github.com/RobinHerbots/jquery.inputmask
 * http://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2015 Robin Herbots
 * Copyright (c) 2010 - 2015 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.1.52
+* Version: 3.1.53
 */
 */
 !function(factory) {
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery", "./jquery.inputmask" ], factory) : factory(jQuery);
     "function" == typeof define && define.amd ? define([ "jquery", "./jquery.inputmask" ], factory) : factory(jQuery);

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


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

@@ -3,7 +3,7 @@
 * http://github.com/RobinHerbots/jquery.inputmask
 * http://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2015 Robin Herbots
 * Copyright (c) 2010 - 2015 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.1.52
+* Version: 3.1.53
 */
 */
 !function($) {
 !function($) {
     function isInputEventSupported(eventName) {
     function isInputEventSupported(eventName) {
@@ -251,13 +251,14 @@
             return !0;
             return !0;
         }
         }
         function stripValidPositions(start, end, nocheck) {
         function stripValidPositions(start, end, nocheck) {
-            var i, startPos = start;
+            var i, s, startPos = start;
             void 0 != getMaskSet().validPositions[start] && getMaskSet().validPositions[start].input == opts.radixPoint && (end++, 
             void 0 != getMaskSet().validPositions[start] && getMaskSet().validPositions[start].input == opts.radixPoint && (end++, 
             startPos++);
             startPos++);
-            var endPos = end;
-            for (i = startPos; end > i; i++) void 0 != getMaskSet().validPositions[i] && (0 != opts.canClearPosition(getMaskSet(), i, getLastValidPosition(), opts) || nocheck === !0 ? delete getMaskSet().validPositions[i] : endPos--);
-            for (i = startPos; i <= getLastValidPosition(); ) {
-                var t = getMaskSet().validPositions[i], s = getMaskSet().validPositions[startPos];
+            for (i = startPos; end > i; i++) void 0 != getMaskSet().validPositions[i] && (nocheck === !0 || 0 != opts.canClearPosition(getMaskSet(), i, getLastValidPosition(), opts)) && delete getMaskSet().validPositions[i];
+            for (resetMaskSet(!0), i = startPos + 1; i <= getLastValidPosition(); ) {
+                for (;void 0 != (s = getMaskSet().validPositions[startPos]); ) startPos++;
+                startPos > i && (i = startPos + 1);
+                var t = getMaskSet().validPositions[i];
                 void 0 != t && void 0 == s ? (positionCanMatchDefinition(startPos, t.match.def) && isValid(startPos, t.input, !0) !== !1 && (delete getMaskSet().validPositions[i], 
                 void 0 != t && void 0 == s ? (positionCanMatchDefinition(startPos, t.match.def) && isValid(startPos, t.input, !0) !== !1 && (delete getMaskSet().validPositions[i], 
                 i++), startPos++) : i++;
                 i++), startPos++) : i++;
             }
             }
@@ -747,7 +748,7 @@
                 };
                 };
             }
             }
         }
         }
-        function handleRemove(input, k, pos) {
+        function handleRemove(input, k, pos, noCheck) {
             function generalize() {
             function generalize() {
                 if (opts.keepStatic) {
                 if (opts.keepStatic) {
                     resetMaskSet(!0);
                     resetMaskSet(!0);
@@ -769,7 +770,7 @@
                 pos.end = pos.begin, pos.begin = pend;
                 pos.end = pos.begin, pos.begin = pend;
             }
             }
             k == $.inputmask.keyCode.BACKSPACE && pos.end - pos.begin <= 1 ? pos.begin = seekPrevious(pos.begin) : k == $.inputmask.keyCode.DELETE && pos.begin == pos.end && pos.end++, 
             k == $.inputmask.keyCode.BACKSPACE && pos.end - pos.begin <= 1 ? pos.begin = seekPrevious(pos.begin) : k == $.inputmask.keyCode.DELETE && pos.begin == pos.end && pos.end++, 
-            stripValidPositions(pos.begin, pos.end), generalize();
+            stripValidPositions(pos.begin, pos.end, noCheck), generalize();
             var lvp = getLastValidPosition(pos.begin);
             var lvp = getLastValidPosition(pos.begin);
             lvp < pos.begin ? (-1 == lvp && resetMaskSet(), getMaskSet().p = seekNext(lvp)) : getMaskSet().p = pos.begin;
             lvp < pos.begin ? (-1 == lvp && resetMaskSet(), getMaskSet().p = seekNext(lvp)) : getMaskSet().p = pos.begin;
         }
         }
@@ -801,7 +802,7 @@
                     end: ndx
                     end: ndx
                 } : caret(input), c = String.fromCharCode(k), isSlctn = isSelection(pos.begin, pos.end);
                 } : caret(input), c = String.fromCharCode(k), isSlctn = isSelection(pos.begin, pos.end);
                 isSlctn && (getMaskSet().undoPositions = $.extend(!0, {}, getMaskSet().validPositions), 
                 isSlctn && (getMaskSet().undoPositions = $.extend(!0, {}, getMaskSet().validPositions), 
-                handleRemove(input, $.inputmask.keyCode.DELETE, pos), opts.insertMode || (opts.insertMode = !opts.insertMode, 
+                handleRemove(input, $.inputmask.keyCode.DELETE, pos, !0), opts.insertMode || (opts.insertMode = !opts.insertMode, 
                 setValidPosition(pos.begin, strict), opts.insertMode = !opts.insertMode), isSlctn = !opts.multi), 
                 setValidPosition(pos.begin, strict), opts.insertMode = !opts.insertMode), isSlctn = !opts.multi), 
                 getMaskSet().writeOutBuffer = !0;
                 getMaskSet().writeOutBuffer = !0;
                 var p = isRTL && !isSlctn ? pos.end : pos.begin, valResult = isValid(p, c, strict);
                 var p = isRTL && !isSlctn ? pos.end : pos.begin, valResult = isValid(p, c, strict);
@@ -2015,8 +2016,10 @@
                 initialValue;
                 initialValue;
             },
             },
             canClearPosition: function(maskset, position, lvp, opts) {
             canClearPosition: function(maskset, position, lvp, opts) {
-                var positionInput = maskset.validPositions[position].input, canClear = positionInput != opts.radixPoint || position == lvp;
+                var positionInput = maskset.validPositions[position].input, canClear = positionInput != opts.radixPoint && isFinite(positionInput) || position == lvp;
                 if (canClear && isFinite(positionInput)) {
                 if (canClear && isFinite(positionInput)) {
+                    for (var pos = position + 1; maskset.validPositions[pos] && (maskset.validPositions[pos].input == opts.groupSeparator || "0" == maskset.validPositions[pos].input); ) delete maskset.validPositions[pos], 
+                    pos++;
                     var buffer = [];
                     var buffer = [];
                     for (var vp in maskset.validPositions) buffer.push(maskset.validPositions[vp].input);
                     for (var vp in maskset.validPositions) buffer.push(maskset.validPositions[vp].input);
                     var matchRslt = buffer.join("").match(opts.regex.integerNPart(opts)), radixPosition = $.inArray(opts.radixPoint, maskset.buffer);
                     var matchRslt = buffer.join("").match(opts.regex.integerNPart(opts)), radixPosition = $.inArray(opts.radixPoint, maskset.buffer);
@@ -2026,8 +2029,7 @@
                         canClear = !1);
                         canClear = !1);
                     }
                     }
                 }
                 }
-                return canClear && maskset.validPositions[position + 1] && maskset.validPositions[position + 1].input == opts.groupSeparator && delete maskset.validPositions[position + 1], 
-                canClear;
+                return canClear;
             }
             }
         },
         },
         currency: {
         currency: {

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


+ 1 - 1
jquery.inputmask.jquery.json

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

+ 9 - 8
js/jquery.inputmask.js

@@ -423,7 +423,7 @@
                 return true;
                 return true;
             }
             }
             function stripValidPositions(start, end, nocheck) {
             function stripValidPositions(start, end, nocheck) {
-                var i, startPos = start;
+                var i, startPos = start, s;
                 if (getMaskSet()["validPositions"][start] != undefined && getMaskSet()["validPositions"][start].input == opts.radixPoint) {
                 if (getMaskSet()["validPositions"][start] != undefined && getMaskSet()["validPositions"][start].input == opts.radixPoint) {
                     end++;
                     end++;
                     startPos++;
                     startPos++;
@@ -431,15 +431,16 @@
                 var endPos = end;
                 var endPos = end;
                 for (i = startPos; i < end; i++) { //clear selection
                 for (i = startPos; i < end; i++) { //clear selection
                     if (getMaskSet()["validPositions"][i] != undefined) {
                     if (getMaskSet()["validPositions"][i] != undefined) {
-                        if (opts.canClearPosition(getMaskSet(), i, getLastValidPosition(), opts) != false || nocheck === true)
+                        if (nocheck === true || opts.canClearPosition(getMaskSet(), i, getLastValidPosition(), opts) != false)
                             delete getMaskSet()["validPositions"][i];
                             delete getMaskSet()["validPositions"][i];
-                        else endPos--;
                     }
                     }
                 }
                 }
 
 
-                for (i = startPos ; i <= getLastValidPosition() ;) {
+                resetMaskSet(true);
+                for (i = startPos + 1 ; i <= getLastValidPosition() ;) {
+                    while ((s = getMaskSet()["validPositions"][startPos]) != undefined) startPos++;
+                    if (i < startPos) i = startPos + 1;
                     var t = getMaskSet()["validPositions"][i];
                     var t = getMaskSet()["validPositions"][i];
-                    var s = getMaskSet()["validPositions"][startPos];
                     if (t != undefined && s == undefined) {
                     if (t != undefined && s == undefined) {
                         if (positionCanMatchDefinition(startPos, t.match.def) && isValid(startPos, t["input"], true) !== false) {
                         if (positionCanMatchDefinition(startPos, t.match.def) && isValid(startPos, t["input"], true) !== false) {
                             delete getMaskSet()["validPositions"][i];
                             delete getMaskSet()["validPositions"][i];
@@ -1305,7 +1306,7 @@
                     };
                     };
                 }
                 }
             }
             }
-            function handleRemove(input, k, pos) {
+            function handleRemove(input, k, pos, noCheck) {
                 function generalize() {
                 function generalize() {
                     if (opts.keepStatic) {
                     if (opts.keepStatic) {
                         resetMaskSet(true);
                         resetMaskSet(true);
@@ -1350,7 +1351,7 @@
                 else if (k == $.inputmask.keyCode.DELETE && pos.begin == pos.end)
                 else if (k == $.inputmask.keyCode.DELETE && pos.begin == pos.end)
                     pos.end++;
                     pos.end++;
 
 
-                stripValidPositions(pos.begin, pos.end);
+                stripValidPositions(pos.begin, pos.end, noCheck);
                 generalize(); //revert the alternation
                 generalize(); //revert the alternation
 
 
                 var lvp = getLastValidPosition(pos.begin);
                 var lvp = getLastValidPosition(pos.begin);
@@ -1435,7 +1436,7 @@
                         var isSlctn = isSelection(pos.begin, pos.end);
                         var isSlctn = isSelection(pos.begin, pos.end);
                         if (isSlctn) {
                         if (isSlctn) {
                             getMaskSet()["undoPositions"] = $.extend(true, {}, getMaskSet()["validPositions"]); //init undobuffer for recovery when not valid
                             getMaskSet()["undoPositions"] = $.extend(true, {}, getMaskSet()["validPositions"]); //init undobuffer for recovery when not valid
-                            handleRemove(input, $.inputmask.keyCode.DELETE, pos);
+                            handleRemove(input, $.inputmask.keyCode.DELETE, pos, true);
                             if (!opts.insertMode) { //preserve some space
                             if (!opts.insertMode) { //preserve some space
                                 opts.insertMode = !opts.insertMode;
                                 opts.insertMode = !opts.insertMode;
                                 setValidPosition(pos.begin, strict);
                                 setValidPosition(pos.begin, strict);

+ 7 - 5
js/jquery.inputmask.numeric.extensions.js

@@ -308,10 +308,16 @@ Optional extensions on the jquery.inputmask base
                 return initialValue;
                 return initialValue;
             },
             },
             canClearPosition: function (maskset, position, lvp, opts) {
             canClearPosition: function (maskset, position, lvp, opts) {
-                var positionInput = maskset["validPositions"][position].input, canClear = positionInput != opts.radixPoint || position == lvp,
+                var positionInput = maskset["validPositions"][position].input, canClear = (positionInput != opts.radixPoint && isFinite(positionInput)) || position == lvp,
                     posOffset = 0;
                     posOffset = 0;
 
 
                 if (canClear && isFinite(positionInput)) {
                 if (canClear && isFinite(positionInput)) {
+                    var pos = position + 1;
+                    while (maskset["validPositions"][pos] && (maskset["validPositions"][pos].input == opts.groupSeparator || maskset["validPositions"][pos].input == "0")) {
+                        delete maskset["validPositions"][pos];
+                        pos++;
+                    }
+
                     var buffer = [];
                     var buffer = [];
                     //build new buffer from validPositions
                     //build new buffer from validPositions
                     for (var vp in maskset.validPositions) {
                     for (var vp in maskset.validPositions) {
@@ -331,10 +337,6 @@ Optional extensions on the jquery.inputmask base
                     }
                     }
                 }
                 }
 
 
-                if (canClear && maskset["validPositions"][position + 1] && maskset["validPositions"][position + 1].input == opts.groupSeparator) {
-                    delete maskset["validPositions"][position + 1];
-                }
-
                 return canClear;
                 return canClear;
             }
             }
         },
         },

+ 18 - 1
qunit/tests_numeric.js

@@ -839,7 +839,7 @@ asyncTest("inputmask(\"decimal\ placeholder :\"\" digitsoptional: false) - 123 -
     $("#testmask")[0].focus();
     $("#testmask")[0].focus();
     $("#testmask").click();
     $("#testmask").click();
 
 
-    setTimeout(function() {
+    setTimeout(function () {
         $("#testmask").Type("123");
         $("#testmask").Type("123");
         start();
         start();
         equal($("#testmask").val(), "123,00", "Result " + $("#testmask").val());
         equal($("#testmask").val(), "123,00", "Result " + $("#testmask").val());
@@ -1102,4 +1102,21 @@ asyncTest("numeric prefix='$' - paste 1234.56 - baileyjames9 & TheAndyBob", func
         equal($("#testmask").val(), "$1,234.56", "Result " + $("#testmask").val());
         equal($("#testmask").val(), "$1,234.56", "Result " + $("#testmask").val());
         $("#testmask").remove();
         $("#testmask").remove();
     }, 5);
     }, 5);
+});
+
+asyncTest("currency alias - 1234.56 => select integer press 1 - babupca", function () {
+    var $fixture = $("#qunit-fixture");
+    $fixture.append('<input type="text" id="testmask" />');
+    $("#testmask").inputmask("currency");
+
+    $("#testmask")[0].focus();
+    $("#testmask").click();
+    setTimeout(function () {
+        $("#testmask").Type("1234.56");
+        $.caret($("#testmask"), 0, 7);
+        $("#testmask").SendKey("1");
+        start();
+        equal($("#testmask")[0]._valueGet(), "$ 1.56", "Result " + $("#testmask")[0]._valueGet());
+        $("#testmask").remove();
+    }, 5);
 });
 });