Browse Source

preserve position after del backspace in decimals

Robin Herbots 12 years ago
parent
commit
183faa320f

+ 1 - 1
build.properties

@@ -7,7 +7,7 @@ distdir = dist
 
 build.major = 2
 build.minor = 3
-build.revision = 1
+build.revision = 2
 
 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.1",
+    "version": "2.3.2",
     "main": "./dist/jquery.inputmask.bundle.js",
     "dependencies": {
         "jquery": ">=1.5"

BIN
dist/jQuery.InputMask.2.3.1.nupkg


BIN
dist/jQuery.InputMask.2.3.2.nupkg


+ 9 - 8
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.1
+* Version: 2.3.2
 */
 
 (function ($) {
@@ -896,7 +896,6 @@
                                 var clickPosition = selectedCaret.begin,
                                     lvp = getActiveMaskSet()["lastValidPosition"],
                                     lastPosition;
-
                                 determineInputDirection(input, selectedCaret);
                                 if (isRTL) {
                                     if (opts.numericInput) {
@@ -1248,7 +1247,6 @@
 
                             determineActiveMasksetIndex(isRTL);
                             writeBuffer(input, getActiveBuffer(), getActiveMaskSet()["p"]);
-                            $(input).click(); //dirty fix should be fixed later
                             if (input._valueGet() == getActiveBufferTemplate().join(''))
                                 $(input).trigger('cleared');
 
@@ -1282,8 +1280,9 @@
                                 }, 0);
                             }
                         }
-
+                        var caretPos = caret(input);
                         opts.onKeyDown.call(this, e, getActiveBuffer(), opts); //extra stuff to execute on keydown
+                        caret(input, caretPos.begin, caretPos.end);
                         ignorable = $.inArray(k, opts.ignorables) != -1;
                     }
 
@@ -1470,7 +1469,9 @@
 
                     function keyupEvent(e) {
                         var $input = $(this), input = this, k = e.keyCode, buffer = getActiveBuffer();
+                        var caretPos = caret(input);
                         opts.onKeyUp.call(this, e, buffer, opts); //extra stuff to execute on keyup
+                        caret(input, caretPos.begin, caretPos.end);
                         if (k == opts.keyCode.TAB && $input.hasClass('focus.inputmask') && input._valueGet().length == 0 && opts.showMaskOnFocus) {
                             buffer = getActiveBufferTemplate().slice();
                             writeBuffer(input, buffer);
@@ -1490,7 +1491,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.1
+Version: 2.3.2
 
 Optional extensions on the jquery.inputmask base
 */
@@ -1592,7 +1593,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.1
+Version: 2.3.2
 
 Optional extensions on the jquery.inputmask base
 */
@@ -2061,7 +2062,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.1
+Version: 2.3.2
 
 Optional extensions on the jquery.inputmask base
 */
@@ -2228,7 +2229,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.1
+Version: 2.3.2
 
 Regex extensions on the jquery.inputmask base
 Allows for using regular expressions as a mask

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


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


+ 1 - 1
jquery.inputmask.jquery.json

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

+ 4 - 3
js/jquery.inputmask.js

@@ -896,7 +896,6 @@
                                 var clickPosition = selectedCaret.begin,
                                     lvp = getActiveMaskSet()["lastValidPosition"],
                                     lastPosition;
-
                                 determineInputDirection(input, selectedCaret);
                                 if (isRTL) {
                                     if (opts.numericInput) {
@@ -1248,7 +1247,6 @@
 
                             determineActiveMasksetIndex(isRTL);
                             writeBuffer(input, getActiveBuffer(), getActiveMaskSet()["p"]);
-                            $(input).click(); //dirty fix should be fixed later
                             if (input._valueGet() == getActiveBufferTemplate().join(''))
                                 $(input).trigger('cleared');
 
@@ -1282,8 +1280,9 @@
                                 }, 0);
                             }
                         }
-
+                        var caretPos = caret(input);
                         opts.onKeyDown.call(this, e, getActiveBuffer(), opts); //extra stuff to execute on keydown
+                        caret(input, caretPos.begin, caretPos.end);
                         ignorable = $.inArray(k, opts.ignorables) != -1;
                     }
 
@@ -1470,7 +1469,9 @@
 
                     function keyupEvent(e) {
                         var $input = $(this), input = this, k = e.keyCode, buffer = getActiveBuffer();
+                        var caretPos = caret(input);
                         opts.onKeyUp.call(this, e, buffer, opts); //extra stuff to execute on keyup
+                        caret(input, caretPos.begin, caretPos.end);
                         if (k == opts.keyCode.TAB && $input.hasClass('focus.inputmask') && input._valueGet().length == 0 && opts.showMaskOnFocus) {
                             buffer = getActiveBufferTemplate().slice();
                             writeBuffer(input, buffer);

+ 29 - 17
qunit/tests.js

@@ -667,11 +667,10 @@ test("inputmask(\"decimal\", { autoGroup: true, groupSeparator: \",\" }\") - inp
     $("#testmask").SendKey("3");
 
     equal($("#testmask").val(), "12,345.123", "Result " + $("#testmask").val());
-
     $("#testmask").remove();
 });
 
-test("inputmask(\"decimal\", { autoGroup: true, groupSeparator: \",\" }\") - input 12345.123 click del del del", function () {
+test("inputmask(\"decimal\", { autoGroup: true, groupSeparator: \",\" }\") - input 12345.123 + remove .123", function () {
     $('body').append('<input type="text" id="testmask" />');
     $("#testmask").inputmask("decimal", { autoGroup: true, groupSeparator: "," });
 
@@ -681,16 +680,20 @@ test("inputmask(\"decimal\", { autoGroup: true, groupSeparator: \",\" }\") - inp
 
     $("#testmask").Type("12345.123");
     $("#testmask")[0].focus();
-    $("#testmask").click();
+    //$("#testmask").click();
+    $("#testmask").SendKey(keyCodes.LEFT);
+    $("#testmask").SendKey(keyCodes.LEFT);
+    $("#testmask").SendKey(keyCodes.LEFT);
+    $("#testmask").SendKey(keyCodes.LEFT);
     $("#testmask").SendKey(keyCodes.DELETE);
     $("#testmask").SendKey(keyCodes.DELETE);
     $("#testmask").SendKey(keyCodes.DELETE);
+    $("#testmask").SendKey(keyCodes.BACKSPACE);
 
     equal($("#testmask").val(), "12,345", "Result " + $("#testmask").val());
-
     $("#testmask").remove();
 });
-test("inputmask(\"decimal\", { autoGroup: true, groupSeparator: \",\" }\") - input 12345.123 click del del del .789", function () {
+test("inputmask(\"decimal\", { autoGroup: true, groupSeparator: \",\" }\") - input 12345.123 + replace .123 => .789", function () {
     $('body').append('<input type="text" id="testmask" />');
     $("#testmask").inputmask("decimal", { autoGroup: true, groupSeparator: "," });
 
@@ -699,18 +702,21 @@ test("inputmask(\"decimal\", { autoGroup: true, groupSeparator: \",\" }\") - inp
     var event;
 
     $("#testmask").Type("12345.123");
-    $("#testmask").click();
+    //$("#testmask").click();
+    $("#testmask").SendKey(keyCodes.LEFT);
+    $("#testmask").SendKey(keyCodes.LEFT);
+    $("#testmask").SendKey(keyCodes.LEFT);
+    $("#testmask").SendKey(keyCodes.LEFT);
     $("#testmask").SendKey(keyCodes.DELETE);
     $("#testmask").SendKey(keyCodes.DELETE);
     $("#testmask").SendKey(keyCodes.DELETE);
     $("#testmask").Type(".789");
 
     equal($("#testmask").val(), "12,345.789", "Result " + $("#testmask").val());
-
     $("#testmask").remove();
 });
 
-test("inputmask(\"decimal\", { autoGroup: false, groupSeparator: \",\" }\") - input 12345.123 click del del del", function () {
+test("inputmask(\"decimal\", { autoGroup: false, groupSeparator: \",\" }\") - input 12345.123 + remove .123", function () {
     $('body').append('<input type="text" id="testmask" />');
     $("#testmask").inputmask("decimal", { autoGroup: false, groupSeparator: "," });
 
@@ -719,17 +725,20 @@ test("inputmask(\"decimal\", { autoGroup: false, groupSeparator: \",\" }\") - in
     var event;
 
     $("#testmask").Type("12345.123");
-    $("#testmask")[0].focus();
-    $("#testmask").click();
+    //$("#testmask").click();
+    $("#testmask").SendKey(keyCodes.LEFT);
+    $("#testmask").SendKey(keyCodes.LEFT);
+    $("#testmask").SendKey(keyCodes.LEFT);
+    $("#testmask").SendKey(keyCodes.LEFT);
     $("#testmask").SendKey(keyCodes.DELETE);
     $("#testmask").SendKey(keyCodes.DELETE);
     $("#testmask").SendKey(keyCodes.DELETE);
+    $("#testmask").SendKey(keyCodes.BACKSPACE);
 
-    equal($("#testmask").val(), "12,345", "Result " + $("#testmask").val());
-
+    equal($("#testmask").val(), "12345", "Result " + $("#testmask").val());
     $("#testmask").remove();
 });
-test("inputmask(\"decimal\", { autoGroup: false, groupSeparator: \",\" }\") - input 12345.123 click del del del .789", function () {
+test("inputmask(\"decimal\", { autoGroup: false, groupSeparator: \",\" }\") - input 12345.123 + replace .123 => .789", function () {
     $('body').append('<input type="text" id="testmask" />');
     $("#testmask").inputmask("decimal", { autoGroup: false, groupSeparator: "," });
 
@@ -738,13 +747,16 @@ test("inputmask(\"decimal\", { autoGroup: false, groupSeparator: \",\" }\") - in
     var event;
 
     $("#testmask").Type("12345.123");
-    $("#testmask").click();
+    //$("#testmask").click();
+    $("#testmask").SendKey(keyCodes.LEFT);
+    $("#testmask").SendKey(keyCodes.LEFT);
+    $("#testmask").SendKey(keyCodes.LEFT);
+    $("#testmask").SendKey(keyCodes.LEFT);
     $("#testmask").SendKey(keyCodes.DELETE);
     $("#testmask").SendKey(keyCodes.DELETE);
     $("#testmask").SendKey(keyCodes.DELETE);
     $("#testmask").Type(".789");
 
-    equal($("#testmask").val(), "12,345.789", "Result " + $("#testmask").val());
-
+    equal($("#testmask").val(), "12345.789", "Result " + $("#testmask").val());
     $("#testmask").remove();
-});
+});