Browse Source

update decimal extension

Robin Herbots 11 years ago
parent
commit
cd71cd7d07

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

@@ -750,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);
@@ -772,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;
         }
         }
@@ -804,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
+ 1 - 1
dist/inputmask/jquery.inputmask.min.js


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


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


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


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


+ 3 - 3
js/jquery.inputmask.js

@@ -1306,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);
@@ -1351,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);
@@ -1436,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);

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

@@ -184,8 +184,8 @@ Optional extensions on the jquery.inputmask base
                     if (matchRslt["0"].indexOf("0") == 0) {
                     if (matchRslt["0"].indexOf("0") == 0) {
                         if (pos < opts.prefix.length) pos = matchRslt.index; //position
                         if (pos < opts.prefix.length) pos = matchRslt.index; //position
                         var _radixPosition = $.inArray(opts.radixPoint, maskset._buffer);
                         var _radixPosition = $.inArray(opts.radixPoint, maskset._buffer);
-                        var digitsMatch = maskset._buffer && maskset.buffer.slice(radixPosition).join('') == maskset._buffer.slice(_radixPosition).join('');
-                        var integerMatch = maskset._buffer && maskset.buffer.slice(matchRslt.index, radixPosition).join('') == maskset._buffer.slice(opts.prefix.length, _radixPosition).join('');
+                        var digitsMatch = maskset._buffer && maskset.buffer.slice(radixPosition).join('') == maskset._buffer.slice(_radixPosition).join('') || parseInt(maskset.buffer.slice(radixPosition + 1).join('')) == 0;
+                        var integerMatch = maskset._buffer && maskset.buffer.slice(matchRslt.index, radixPosition).join('') == maskset._buffer.slice(opts.prefix.length, _radixPosition).join('') || maskset.buffer.slice(matchRslt.index, radixPosition).join('') == "0";
 
 
                         if (radixPosition == -1 || digitsMatch && integerMatch) {
                         if (radixPosition == -1 || digitsMatch && integerMatch) {
                             maskset.buffer.splice(matchRslt.index, 1);
                             maskset.buffer.splice(matchRslt.index, 1);
@@ -331,8 +331,8 @@ Optional extensions on the jquery.inputmask base
                             canClear = matchRslt.index != position || radixPosition == -1;
                             canClear = matchRslt.index != position || radixPosition == -1;
                         } else {
                         } else {
                             var intPart = parseInt(matchRslt["0"].replace(new RegExp($.inputmask.escapeRegex.call(this, opts.groupSeparator), "g"), ""));
                             var intPart = parseInt(matchRslt["0"].replace(new RegExp($.inputmask.escapeRegex.call(this, opts.groupSeparator), "g"), ""));
-                            if (radixPosition != -1 && intPart < 10) {
-                                maskset["validPositions"][position].input = opts.placeholder.charAt(0);
+                            if (radixPosition != -1 && intPart < 10 && opts.placeholder.charAt(0) == "0") {
+                                maskset["validPositions"][position].input = "0";
                                 canClear = false;
                                 canClear = false;
                             }
                             }
                         }
                         }

+ 3 - 2
qunit/tests_numeric.js

@@ -824,7 +824,7 @@ test("inputmask(\"integer\") - -5.000,77 - DrSammyD", function () {
 });
 });
 
 
 asyncTest("inputmask(\"decimal\ placeholder :\"\" digitsoptional: false) - 123 - loostro", function () {
 asyncTest("inputmask(\"decimal\ placeholder :\"\" digitsoptional: false) - 123 - loostro", function () {
-    var $fixture = $("#qunit-fixture");
+    var $fixture = $("body");
     $fixture.append('<input type="text" id="testmask" value="0,00" />');
     $fixture.append('<input type="text" id="testmask" value="0,00" />');
     $("#testmask").inputmask("decimal", {
     $("#testmask").inputmask("decimal", {
         radixPoint: ",",
         radixPoint: ",",
@@ -838,13 +838,14 @@ asyncTest("inputmask(\"decimal\ placeholder :\"\" digitsoptional: false) - 123 -
     });
     });
     $("#testmask")[0].focus();
     $("#testmask")[0].focus();
     $("#testmask").click();
     $("#testmask").click();
+    $.caret($("#testmask"), 0);
 
 
     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());
         $("#testmask").remove();
         $("#testmask").remove();
-    }, 0);
+    }, 5);
 });
 });
 
 
 asyncTest("inputmask(\"decimal\ placeholder :\"0\" digitsoptional: false) - .12 - YodaJM", function () {
 asyncTest("inputmask(\"decimal\ placeholder :\"0\" digitsoptional: false) - .12 - YodaJM", function () {