Browse Source

partial fix for issue #731

Robin Herbots 11 years ago
parent
commit
0ef26ee006

+ 7 - 4
dist/inputmask/jquery.inputmask.js

@@ -798,10 +798,13 @@
                         }, 0);
                     } else isSlctn && (getMaskSet().buffer = void 0, getMaskSet().validPositions = getMaskSet().undoPositions);
                 } else isSlctn && (getMaskSet().buffer = void 0, getMaskSet().validPositions = getMaskSet().undoPositions);
-                if (opts.showTooltip && $input.prop("title", getMaskSet().mask), e && 1 != checkval) {
-                    e.preventDefault();
-                    var currentCaretPos = caret(input), keypressResult = opts.onKeyPress.call(this, e, getBuffer(), currentCaretPos.begin, opts);
-                    handleOnKeyResult(input, keypressResult, currentCaretPos);
+                if (opts.showTooltip && $input.prop("title", getMaskSet().mask), e && e.preventDefault(), 
+                checkval) {
+                    var keyResult = opts.onKeyPress.call(this, e, getBuffer(), -1, opts);
+                    keyResult && (handleOnKeyResult(input, keyResult), getMaskSet().p = getLastValidPosition() + 1);
+                } else {
+                    var currentCaretPos = caret(input);
+                    handleOnKeyResult(input, opts.onKeyPress.call(this, e, getBuffer(), currentCaretPos.begin, opts), currentCaretPos);
                 }
             }
         }

+ 7 - 4
dist/jquery.inputmask.bundle.js

@@ -796,10 +796,13 @@
                         }, 0);
                     } else isSlctn && (getMaskSet().buffer = void 0, getMaskSet().validPositions = getMaskSet().undoPositions);
                 } else isSlctn && (getMaskSet().buffer = void 0, getMaskSet().validPositions = getMaskSet().undoPositions);
-                if (opts.showTooltip && $input.prop("title", getMaskSet().mask), e && 1 != checkval) {
-                    e.preventDefault();
-                    var currentCaretPos = caret(input), keypressResult = opts.onKeyPress.call(this, e, getBuffer(), currentCaretPos.begin, opts);
-                    handleOnKeyResult(input, keypressResult, currentCaretPos);
+                if (opts.showTooltip && $input.prop("title", getMaskSet().mask), e && e.preventDefault(), 
+                checkval) {
+                    var keyResult = opts.onKeyPress.call(this, e, getBuffer(), -1, opts);
+                    keyResult && (handleOnKeyResult(input, keyResult), getMaskSet().p = getLastValidPosition() + 1);
+                } else {
+                    var currentCaretPos = caret(input);
+                    handleOnKeyResult(input, opts.onKeyPress.call(this, e, getBuffer(), currentCaretPos.begin, opts), currentCaretPos);
                 }
             }
         }

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


+ 9 - 5
js/jquery.inputmask.js

@@ -1442,12 +1442,16 @@
                             $input.prop("title", getMaskSet()["mask"]);
                         }
 
-                        if (e && checkval != true) {
-                            e.preventDefault();
-
+                        if (e) e.preventDefault();
+                        if (checkval) {
+                            var keyResult = opts.onKeyPress.call(this, e, getBuffer(), -1, opts);
+                            if (keyResult) {
+                                handleOnKeyResult(input, keyResult);
+                                getMaskSet()["p"] = getLastValidPosition() + 1;
+                            }
+                        } else {
                             var currentCaretPos = caret(input);
-                            var keypressResult = opts.onKeyPress.call(this, e, getBuffer(), currentCaretPos.begin, opts);
-                            handleOnKeyResult(input, keypressResult, currentCaretPos);
+                            handleOnKeyResult(input, opts.onKeyPress.call(this, e, getBuffer(), currentCaretPos.begin, opts), currentCaretPos);
                         }
                     }
                 }

+ 19 - 0
qunit/tests_numeric.js

@@ -916,6 +916,25 @@ test("inputmask(\"decimal\") - 8100000.00 - ManRueda", function () {
 
     $("#testmask").val(8100000.00);
 
+    equal($("#testmask").val(), "810.000", "Result " + $("#testmask").val());
+    $("#testmask").remove();
+});
+
+test("inputmask(\"decimal\") - 8100000.00 digitsoptional false - ManRueda", function () {
+    var $fixture = $("#qunit-fixture");
+    $fixture.append('<input type="text" id="testmask" />');
+    $("#testmask").inputmask('decimal', {
+        integerDigits: 6,
+        groupSeparator: '.',
+        autoGroup: true,
+        digits: 2,
+        digitsOptional: false,
+        radixPoint: ',',
+        groupSize: 3
+    });
+
+    $("#testmask").val(8100000.00);
+
     equal($("#testmask").val(), "810.000,00", "Result " + $("#testmask").val());
     $("#testmask").remove();
 });