Browse Source

How Can I have caret position on decimal digit(after decimal point) for currency inputmask ? #1282

Robin Herbots 9 years ago
parent
commit
73b58b1b23

+ 2 - 1
CHANGELOG.md

@@ -7,11 +7,12 @@ All notable changes to this project will be documented in this file.
 - 'casing': 'title' #1277
 - 'casing': 'title' #1277
 
 
 ### Updates
 ### Updates
+- replaced radixFocus option by positionCaretOnClick.  Allows choice for behavior of the caret on click. (none, lvp (default), radixFocus)
 - performance updates
 - performance updates
 	- getmasklength
 	- getmasklength
 
 
 ### Fixed
 ### Fixed
-
+- How Can I have caret position on decimal digit(after decimal point) for currency inputmask ? #1282
 - How to implement mask for these numbers? #840 (alternator)
 - How to implement mask for these numbers? #840 (alternator)
 - 'setvalue' on mask with a suffix results in suffix being doubled, while `$.fn.val` works fine #1267
 - 'setvalue' on mask with a suffix results in suffix being doubled, while `$.fn.val` works fine #1267
 
 

+ 4 - 3
README.md

@@ -924,9 +924,6 @@ Define the radixpoint (decimal separator)<br>Default: ""
 ### groupSeparator (numerics)
 ### groupSeparator (numerics)
 Define the groupseparator<br>Default: ""
 Define the groupseparator<br>Default: ""
 
 
-### radixFocus (numerics)
-Position the caret to the radixpoint on the initial click into the inputfield.<br>Default: false
-
 ### nojumps
 ### nojumps
 Do not jump over fixed parts in the mask.<br>Default: false
 Do not jump over fixed parts in the mask.<br>Default: false
 
 
@@ -990,6 +987,10 @@ Inputmask("(99 99 999999)|(i{+})", {
 Return nothing when the user hasn't entered anything.
 Return nothing when the user hasn't entered anything.
 Default: true
 Default: true
 
 
+### positionCaretOnClick
+Positioning of the caret on click.  Options none, lvp (based on the last valid position (default), radixFocus (position caret to radixpoint on initial click)
+Default: "lvp"
+
 ## General
 ## General
 ### set a value and apply mask
 ### set a value and apply mask
 this can be done with the traditional jquery.val function (all browsers) or JavaScript value property for browsers which implement lookupGetter or getOwnPropertyDescriptor
 this can be done with the traditional jquery.val function (all browsers) or JavaScript value property for browsers which implement lookupGetter or getOwnPropertyDescriptor

+ 1 - 1
bower.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "jquery.inputmask",
   "name": "jquery.inputmask",
-  "version": "3.3.2-5",
+  "version": "3.3.2-6",
   "main": [
   "main": [
     "./dist/inputmask/inputmask.js"
     "./dist/inputmask/inputmask.js"
   ],
   ],

+ 1 - 1
component.json

@@ -2,7 +2,7 @@
   "name": "jquery_inputmask",
   "name": "jquery_inputmask",
   "repository": "robinherbots/jquery.inputmask",
   "repository": "robinherbots/jquery.inputmask",
   "description": "jquery.inputmask is a jquery plugin which create an input mask.",
   "description": "jquery.inputmask is a jquery plugin which create an input mask.",
-  "version": "3.3.2-5",
+  "version": "3.3.2-6",
   "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
   "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
   "main": "./dist/jquery.inputmask.bundle.js",
   "main": "./dist/jquery.inputmask.bundle.js",
   "scripts": [
   "scripts": [

+ 1 - 1
composer.json

@@ -1,7 +1,7 @@
 {
 {
   "name": "robinherbots/jquery.inputmask",
   "name": "robinherbots/jquery.inputmask",
   "description": "jquery.inputmask is a jquery plugin which create an input mask.",
   "description": "jquery.inputmask is a jquery plugin which create an input mask.",
-  "version": "3.3.2-5",
+  "version": "3.3.2-6",
   "type": "library",
   "type": "library",
   "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
   "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
   "homepage": "http://robinherbots.github.io/jquery.inputmask",
   "homepage": "http://robinherbots.github.io/jquery.inputmask",

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

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Copyright (c) 2010 - 2016 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.3.2-5
+* Version: 3.3.2-6
 */
 */
 !function(factory) {
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);

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

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Copyright (c) 2010 - 2016 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.3.2-5
+* Version: 3.3.2-6
 */
 */
 !function(factory) {
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery")) : factory(jQuery);
     "function" == typeof define && define.amd ? define([ "jquery" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery")) : factory(jQuery);

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

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Copyright (c) 2010 - 2016 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.3.2-5
+* Version: 3.3.2-6
 */
 */
 !function(factory) {
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);

+ 15 - 5
dist/inputmask/inputmask.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Copyright (c) 2010 - 2016 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.3.2-5
+* Version: 3.3.2-6
 */
 */
 !function(factory) {
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery")) : factory(window.dependencyLib || jQuery);
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery")) : factory(window.dependencyLib || jQuery);
@@ -1058,7 +1058,7 @@
         }
         }
         function clickEvent(e) {
         function clickEvent(e) {
             function doRadixFocus(clickPos) {
             function doRadixFocus(clickPos) {
-                if (opts.radixFocus && "" !== opts.radixPoint) {
+                if ("" !== opts.radixPoint) {
                     var vps = getMaskSet().validPositions;
                     var vps = getMaskSet().validPositions;
                     if (void 0 === vps[clickPos] || vps[clickPos].input === getPlaceholder(clickPos)) {
                     if (void 0 === vps[clickPos] || vps[clickPos].input === getPlaceholder(clickPos)) {
                         if (clickPos < seekNext(-1)) return !0;
                         if (clickPos < seekNext(-1)) return !0;
@@ -1075,7 +1075,17 @@
             setTimeout(function() {
             setTimeout(function() {
                 if (document.activeElement === input) {
                 if (document.activeElement === input) {
                     var selectedCaret = caret(input);
                     var selectedCaret = caret(input);
-                    if (selectedCaret.begin === selectedCaret.end) if (doRadixFocus(selectedCaret.begin)) caret(input, opts.numericInput ? seekNext($.inArray(opts.radixPoint, getBuffer())) : $.inArray(opts.radixPoint, getBuffer())); else {
+                    if (selectedCaret.begin === selectedCaret.end) switch (opts.positionCaretOnClick) {
+                      case "none":
+                        break;
+
+                      case "radixFocus":
+                        if (doRadixFocus(selectedCaret.begin)) {
+                            caret(input, opts.numericInput ? seekNext($.inArray(opts.radixPoint, getBuffer())) : $.inArray(opts.radixPoint, getBuffer()));
+                            break;
+                        }
+
+                      default:
                         var clickPosition = selectedCaret.begin, lvclickPosition = getLastValidPosition(clickPosition, !0), lastPosition = seekNext(lvclickPosition);
                         var clickPosition = selectedCaret.begin, lvclickPosition = getLastValidPosition(clickPosition, !0), lastPosition = seekNext(lvclickPosition);
                         if (lastPosition > clickPosition) caret(input, isMask(clickPosition) || isMask(clickPosition - 1) ? clickPosition : seekNext(clickPosition)); else {
                         if (lastPosition > clickPosition) caret(input, isMask(clickPosition) || isMask(clickPosition - 1) ? clickPosition : seekNext(clickPosition)); else {
                             var placeholder = getPlaceholder(lastPosition);
                             var placeholder = getPlaceholder(lastPosition);
@@ -1312,7 +1322,6 @@
             radixPoint: "",
             radixPoint: "",
             radixPointDefinitionSymbol: void 0,
             radixPointDefinitionSymbol: void 0,
             groupSeparator: "",
             groupSeparator: "",
-            radixFocus: !1,
             nojumps: !1,
             nojumps: !1,
             nojumpsThreshold: 0,
             nojumpsThreshold: 0,
             keepStatic: null,
             keepStatic: null,
@@ -1342,7 +1351,8 @@
             staticDefinitionSymbol: void 0,
             staticDefinitionSymbol: void 0,
             jitMasking: !1,
             jitMasking: !1,
             nullable: !0,
             nullable: !0,
-            inputEventOnly: !1
+            inputEventOnly: !1,
+            positionCaretOnClick: "lvp"
         },
         },
         masksCache: {},
         masksCache: {},
         mask: function(elems) {
         mask: function(elems) {

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

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Copyright (c) 2010 - 2016 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.3.2-5
+* Version: 3.3.2-6
 */
 */
 !function(factory) {
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);
@@ -25,10 +25,10 @@
                     opts.integerDigits < 1 && (opts.integerDigits = "*");
                     opts.integerDigits < 1 && (opts.integerDigits = "*");
                 }
                 }
                 opts.placeholder.length > 1 && (opts.placeholder = opts.placeholder.charAt(0)), 
                 opts.placeholder.length > 1 && (opts.placeholder = opts.placeholder.charAt(0)), 
-                opts.radixFocus = opts.radixFocus && "" !== opts.placeholder && opts.integerOptional === !0, 
+                "radixFocus" === opts.positionCaretOnClick && "" === opts.placeholder && opts.integerOptional === !1 && (opts.positionCaretOnClick = "lvp"), 
                 opts.definitions[";"] = opts.definitions["~"], opts.definitions[";"].definitionSymbol = "~", 
                 opts.definitions[";"] = opts.definitions["~"], opts.definitions[";"].definitionSymbol = "~", 
-                opts.numericInput === !0 && (opts.radixFocus = !1, opts.digitsOptional = !1, isNaN(opts.digits) && (opts.digits = 2), 
-                opts.decimalProtect = !1);
+                opts.numericInput === !0 && (opts.positionCaretOnClick = "radixFocus" === opts.positionCaretOnClick ? "lvp" : opts.positionCaretOnClick, 
+                opts.digitsOptional = !1, isNaN(opts.digits) && (opts.digits = 2), opts.decimalProtect = !1);
                 var mask = autoEscape(opts.prefix);
                 var mask = autoEscape(opts.prefix);
                 return mask += "[+]", mask += opts.integerOptional === !0 ? "~{1," + opts.integerDigits + "}" : "~{" + opts.integerDigits + "}", 
                 return mask += "[+]", mask += opts.integerOptional === !0 ? "~{1," + opts.integerDigits + "}" : "~{" + opts.integerDigits + "}", 
                 void 0 !== opts.digits && (isNaN(opts.digits) || parseInt(opts.digits) > 0) && (opts.decimalProtect && (opts.radixPointDefinitionSymbol = ":"), 
                 void 0 !== opts.digits && (isNaN(opts.digits) || parseInt(opts.digits) > 0) && (opts.decimalProtect && (opts.radixPointDefinitionSymbol = ":"), 
@@ -44,7 +44,7 @@
             digits: "*",
             digits: "*",
             digitsOptional: !0,
             digitsOptional: !0,
             radixPoint: ".",
             radixPoint: ".",
-            radixFocus: !0,
+            positionCaretOnClick: "radixFocus",
             groupSize: 3,
             groupSize: 3,
             groupSeparator: "",
             groupSeparator: "",
             autoGroup: !1,
             autoGroup: !1,

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

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Copyright (c) 2010 - 2016 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.3.2-5
+* Version: 3.3.2-6
 */
 */
 !function(factory) {
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);
     "function" == typeof define && define.amd ? define([ "jquery", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);

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

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Copyright (c) 2010 - 2016 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.3.2-5
+* Version: 3.3.2-6
 */
 */
 !function(factory) {
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);

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

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Copyright (c) 2010 - 2016 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.3.2-5
+* Version: 3.3.2-6
 */
 */
 !function(factory) {
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery"), require("./inputmask")) : factory(jQuery, window.Inputmask);
     "function" == typeof define && define.amd ? define([ "jquery", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery"), require("./inputmask")) : factory(jQuery, window.Inputmask);

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

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Copyright (c) 2010 - 2016 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.3.2-5
+* Version: 3.3.2-6
 */
 */
 !function($) {
 !function($) {
     function Inputmask(alias, options) {
     function Inputmask(alias, options) {
@@ -1056,7 +1056,7 @@
         }
         }
         function clickEvent(e) {
         function clickEvent(e) {
             function doRadixFocus(clickPos) {
             function doRadixFocus(clickPos) {
-                if (opts.radixFocus && "" !== opts.radixPoint) {
+                if ("" !== opts.radixPoint) {
                     var vps = getMaskSet().validPositions;
                     var vps = getMaskSet().validPositions;
                     if (void 0 === vps[clickPos] || vps[clickPos].input === getPlaceholder(clickPos)) {
                     if (void 0 === vps[clickPos] || vps[clickPos].input === getPlaceholder(clickPos)) {
                         if (clickPos < seekNext(-1)) return !0;
                         if (clickPos < seekNext(-1)) return !0;
@@ -1073,7 +1073,17 @@
             setTimeout(function() {
             setTimeout(function() {
                 if (document.activeElement === input) {
                 if (document.activeElement === input) {
                     var selectedCaret = caret(input);
                     var selectedCaret = caret(input);
-                    if (selectedCaret.begin === selectedCaret.end) if (doRadixFocus(selectedCaret.begin)) caret(input, opts.numericInput ? seekNext($.inArray(opts.radixPoint, getBuffer())) : $.inArray(opts.radixPoint, getBuffer())); else {
+                    if (selectedCaret.begin === selectedCaret.end) switch (opts.positionCaretOnClick) {
+                      case "none":
+                        break;
+
+                      case "radixFocus":
+                        if (doRadixFocus(selectedCaret.begin)) {
+                            caret(input, opts.numericInput ? seekNext($.inArray(opts.radixPoint, getBuffer())) : $.inArray(opts.radixPoint, getBuffer()));
+                            break;
+                        }
+
+                      default:
                         var clickPosition = selectedCaret.begin, lvclickPosition = getLastValidPosition(clickPosition, !0), lastPosition = seekNext(lvclickPosition);
                         var clickPosition = selectedCaret.begin, lvclickPosition = getLastValidPosition(clickPosition, !0), lastPosition = seekNext(lvclickPosition);
                         if (lastPosition > clickPosition) caret(input, isMask(clickPosition) || isMask(clickPosition - 1) ? clickPosition : seekNext(clickPosition)); else {
                         if (lastPosition > clickPosition) caret(input, isMask(clickPosition) || isMask(clickPosition - 1) ? clickPosition : seekNext(clickPosition)); else {
                             var placeholder = getPlaceholder(lastPosition);
                             var placeholder = getPlaceholder(lastPosition);
@@ -1310,7 +1320,6 @@
             radixPoint: "",
             radixPoint: "",
             radixPointDefinitionSymbol: void 0,
             radixPointDefinitionSymbol: void 0,
             groupSeparator: "",
             groupSeparator: "",
-            radixFocus: !1,
             nojumps: !1,
             nojumps: !1,
             nojumpsThreshold: 0,
             nojumpsThreshold: 0,
             keepStatic: null,
             keepStatic: null,
@@ -1340,7 +1349,8 @@
             staticDefinitionSymbol: void 0,
             staticDefinitionSymbol: void 0,
             jitMasking: !1,
             jitMasking: !1,
             nullable: !0,
             nullable: !0,
-            inputEventOnly: !1
+            inputEventOnly: !1,
+            positionCaretOnClick: "lvp"
         },
         },
         masksCache: {},
         masksCache: {},
         mask: function(elems) {
         mask: function(elems) {
@@ -2121,10 +2131,10 @@
                     opts.integerDigits < 1 && (opts.integerDigits = "*");
                     opts.integerDigits < 1 && (opts.integerDigits = "*");
                 }
                 }
                 opts.placeholder.length > 1 && (opts.placeholder = opts.placeholder.charAt(0)), 
                 opts.placeholder.length > 1 && (opts.placeholder = opts.placeholder.charAt(0)), 
-                opts.radixFocus = opts.radixFocus && "" !== opts.placeholder && opts.integerOptional === !0, 
+                "radixFocus" === opts.positionCaretOnClick && "" === opts.placeholder && opts.integerOptional === !1 && (opts.positionCaretOnClick = "lvp"), 
                 opts.definitions[";"] = opts.definitions["~"], opts.definitions[";"].definitionSymbol = "~", 
                 opts.definitions[";"] = opts.definitions["~"], opts.definitions[";"].definitionSymbol = "~", 
-                opts.numericInput === !0 && (opts.radixFocus = !1, opts.digitsOptional = !1, isNaN(opts.digits) && (opts.digits = 2), 
-                opts.decimalProtect = !1);
+                opts.numericInput === !0 && (opts.positionCaretOnClick = "radixFocus" === opts.positionCaretOnClick ? "lvp" : opts.positionCaretOnClick, 
+                opts.digitsOptional = !1, isNaN(opts.digits) && (opts.digits = 2), opts.decimalProtect = !1);
                 var mask = autoEscape(opts.prefix);
                 var mask = autoEscape(opts.prefix);
                 return mask += "[+]", mask += opts.integerOptional === !0 ? "~{1," + opts.integerDigits + "}" : "~{" + opts.integerDigits + "}", 
                 return mask += "[+]", mask += opts.integerOptional === !0 ? "~{1," + opts.integerDigits + "}" : "~{" + opts.integerDigits + "}", 
                 void 0 !== opts.digits && (isNaN(opts.digits) || parseInt(opts.digits) > 0) && (opts.decimalProtect && (opts.radixPointDefinitionSymbol = ":"), 
                 void 0 !== opts.digits && (isNaN(opts.digits) || parseInt(opts.digits) > 0) && (opts.decimalProtect && (opts.radixPointDefinitionSymbol = ":"), 
@@ -2140,7 +2150,7 @@
             digits: "*",
             digits: "*",
             digitsOptional: !0,
             digitsOptional: !0,
             radixPoint: ".",
             radixPoint: ".",
-            radixFocus: !0,
+            positionCaretOnClick: "radixFocus",
             groupSize: 3,
             groupSize: 3,
             groupSeparator: "",
             groupSeparator: "",
             autoGroup: !1,
             autoGroup: !1,

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


+ 1 - 1
dist/min/inputmask/inputmask.dependencyLib.jquery.min.js

@@ -3,6 +3,6 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Copyright (c) 2010 - 2016 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.3.2-5
+* Version: 3.3.2-6
 */
 */
 !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return window.dependencyLib=a,a});
 !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return window.dependencyLib=a,a});

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


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


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


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


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


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


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


+ 24 - 17
js/inputmask.js

@@ -88,7 +88,6 @@
 			radixPoint: "", //".", // | ","
 			radixPoint: "", //".", // | ","
 			radixPointDefinitionSymbol: undefined, //set the radixPoint definitionSymbol ~ used for awareness of the radixpoint
 			radixPointDefinitionSymbol: undefined, //set the radixPoint definitionSymbol ~ used for awareness of the radixpoint
 			groupSeparator: "", //",", // | "."
 			groupSeparator: "", //",", // | "."
-			radixFocus: false, //position caret to radixpoint on initial click
 			//numeric basic properties
 			//numeric basic properties
 			nojumps: false, //do not jump over fixed parts in the mask
 			nojumps: false, //do not jump over fixed parts in the mask
 			nojumpsThreshold: 0, //start nojumps as of
 			nojumpsThreshold: 0, //start nojumps as of
@@ -120,7 +119,8 @@
 			staticDefinitionSymbol: undefined, //specify a definitionSymbol for static content, used to make matches for alternators
 			staticDefinitionSymbol: undefined, //specify a definitionSymbol for static content, used to make matches for alternators
 			jitMasking: false, //just in time masking ~ only mask while typing, can n (number), true or false
 			jitMasking: false, //just in time masking ~ only mask while typing, can n (number), true or false
 			nullable: true, //return nothing instead of the buffertemplate when nothing is returned.
 			nullable: true, //return nothing instead of the buffertemplate when nothing is returned.
-			inputEventOnly: false //testing inputfallback behavior
+			inputEventOnly: false, //testing inputfallback behavior
+			positionCaretOnClick: "lvp" //none, lvp (based on the last valid position (default), radixFocus (position caret to radixpoint on initial click)
 		},
 		},
 		masksCache: {},
 		masksCache: {},
 		mask: function (elems) {
 		mask: function (elems) {
@@ -2539,7 +2539,7 @@
 
 
 		function clickEvent(e) {
 		function clickEvent(e) {
 			function doRadixFocus(clickPos) {
 			function doRadixFocus(clickPos) {
-				if (opts.radixFocus && opts.radixPoint !== "") {
+				if (opts.radixPoint !== "") {
 					var vps = getMaskSet().validPositions;
 					var vps = getMaskSet().validPositions;
 					if (vps[clickPos] === undefined || (vps[clickPos].input === getPlaceholder(clickPos))) {
 					if (vps[clickPos] === undefined || (vps[clickPos].input === getPlaceholder(clickPos))) {
 						if (clickPos < seekNext(-1)) return true;
 						if (clickPos < seekNext(-1)) return true;
@@ -2562,22 +2562,29 @@
 				if (document.activeElement === input) {
 				if (document.activeElement === input) {
 					var selectedCaret = caret(input);
 					var selectedCaret = caret(input);
 					if (selectedCaret.begin === selectedCaret.end) {
 					if (selectedCaret.begin === selectedCaret.end) {
-						if (doRadixFocus(selectedCaret.begin)) {
-							caret(input, opts.numericInput ? seekNext($.inArray(opts.radixPoint, getBuffer())) : $.inArray(opts.radixPoint, getBuffer()));
-						} else {
-							var clickPosition = selectedCaret.begin,
-								lvclickPosition = getLastValidPosition(clickPosition, true),
-								lastPosition = seekNext(lvclickPosition);
+						switch (opts.positionCaretOnClick) {
+							case "none":
+								break;
+							case "radixFocus":
+								if (doRadixFocus(selectedCaret.begin)) {
+									caret(input, opts.numericInput ? seekNext($.inArray(opts.radixPoint, getBuffer())) : $.inArray(opts.radixPoint, getBuffer()));
+									break;
+								}
+							default: //lvp:
+								var clickPosition = selectedCaret.begin,
+									lvclickPosition = getLastValidPosition(clickPosition, true),
+									lastPosition = seekNext(lvclickPosition);
 
 
-							if (clickPosition < lastPosition) {
-								caret(input, !isMask(clickPosition) && !isMask(clickPosition - 1) ? seekNext(clickPosition) : clickPosition);
-							} else {
-								var placeholder = getPlaceholder(lastPosition);
-								if ((placeholder !== "" && getBuffer()[lastPosition] !== placeholder) || (!isMask(lastPosition, true) && getTest(lastPosition).def === placeholder)) {
-									lastPosition = seekNext(lastPosition);
+								if (clickPosition < lastPosition) {
+									caret(input, !isMask(clickPosition) && !isMask(clickPosition - 1) ? seekNext(clickPosition) : clickPosition);
+								} else {
+									var placeholder = getPlaceholder(lastPosition);
+									if ((placeholder !== "" && getBuffer()[lastPosition] !== placeholder) || (!isMask(lastPosition, true) && getTest(lastPosition).def === placeholder)) {
+										lastPosition = seekNext(lastPosition);
+									}
+									caret(input, lastPosition);
 								}
 								}
-								caret(input, lastPosition);
-							}
+								break;
 						}
 						}
 					}
 					}
 				}
 				}

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

@@ -70,13 +70,14 @@
 					opts.placeholder = opts.placeholder.charAt(0);
 					opts.placeholder = opts.placeholder.charAt(0);
 				}
 				}
 				//only allow radixfocus when placeholder = 0
 				//only allow radixfocus when placeholder = 0
-				opts.radixFocus = opts.radixFocus && opts.placeholder !== "" && opts.integerOptional === true;
-
+				if (opts.positionCaretOnClick === "radixFocus" && (opts.placeholder === "" && opts.integerOptional === false)) {
+					opts.positionCaretOnClick = "lvp";
+				}
 				opts.definitions[";"] = opts.definitions["~"]; //clone integer def for decimals
 				opts.definitions[";"] = opts.definitions["~"]; //clone integer def for decimals
 				opts.definitions[";"].definitionSymbol = "~";
 				opts.definitions[";"].definitionSymbol = "~";
 
 
 				if (opts.numericInput === true) { //finance people input style
 				if (opts.numericInput === true) { //finance people input style
-					opts.radixFocus = false;
+					opts.positionCaretOnClick = opts.positionCaretOnClick === "radixFocus" ? "lvp" : opts.positionCaretOnClick;
 					opts.digitsOptional = false;
 					opts.digitsOptional = false;
 					if (isNaN(opts.digits)) opts.digits = 2;
 					if (isNaN(opts.digits)) opts.digits = 2;
 					opts.decimalProtect = false;
 					opts.decimalProtect = false;
@@ -114,7 +115,7 @@
 			digits: "*", //number of fractionalDigits
 			digits: "*", //number of fractionalDigits
 			digitsOptional: true,
 			digitsOptional: true,
 			radixPoint: ".",
 			radixPoint: ".",
-			radixFocus: true,
+			positionCaretOnClick: "radixFocus",
 			groupSize: 3,
 			groupSize: 3,
 			groupSeparator: "",
 			groupSeparator: "",
 			autoGroup: false,
 			autoGroup: false,

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "jquery.inputmask",
   "name": "jquery.inputmask",
-  "version": "3.3.2-5",
+  "version": "3.3.2-6",
   "description": "jquery.inputmask is a jquery plugin which create an input mask.",
   "description": "jquery.inputmask is a jquery plugin which create an input mask.",
   "main": "./dist/inputmask/jquery.inputmask.js",
   "main": "./dist/inputmask/jquery.inputmask.js",
   "files": [
   "files": [