Browse Source

add radixFocus option

Robin Herbots 11 years ago
parent
commit
2ea540d2cd

+ 18 - 2
README.md

@@ -604,8 +604,24 @@ $(document).ready(function(){
 ```
 
 #### radixPoint
-#### nojumps: false, //do not jump over fixed parts in the mask
-#### nojumpsThreshold: 0, //start nojumps as of
+
+Define the radixpoint (decimal separator)  
+Default: ""
+
+####radixFocus
+
+Position the caret to the radixpoint on the initial click into the inputfield.  
+Default: false
+
+#### nojumps
+ 
+Do not jump over fixed parts in the mask.  
+Default: false
+#### nojumpsThreshold
+
+Start nojumps as of  
+Default: 0
+ 
 #### keepStatic
 Default: undefined (~false)   
 Use in combination with the alternator syntax

+ 6 - 2
dist/inputmask/jquery.inputmask.js

@@ -874,8 +874,11 @@
                     $(input).is(":focus") && setTimeout(function() {
                         var selectedCaret = caret(input);
                         if (selectedCaret.begin == selectedCaret.end) {
-                            var clickPosition = isRTL ? TranslatePosition(selectedCaret.begin) : selectedCaret.begin, lvp = getLastValidPosition(clickPosition), lastPosition = seekNext(lvp);
-                            lastPosition >= clickPosition ? isMask(clickPosition) ? caret(input, clickPosition) : caret(input, -1 == lvp && "" != opts.radixPoint ? $.inArray(opts.radixPoint, getBuffer()) : seekNext(clickPosition)) : caret(input, lastPosition);
+                            var clickPosition = isRTL ? TranslatePosition(selectedCaret.begin) : selectedCaret.begin, lvp = getLastValidPosition(clickPosition);
+                            if (-1 == lvp && opts.radixFocus && "" != opts.radixPoint && -1 != $.inArray(opts.radixPoint, getBuffer())) caret(input, $.inArray(opts.radixPoint, getBuffer())); else {
+                                var lastPosition = seekNext(lvp);
+                                lastPosition > clickPosition ? caret(input, isMask(clickPosition) ? clickPosition : seekNext(clickPosition)) : caret(input, lastPosition);
+                            }
                         }
                     }, 0);
                 }).bind("dblclick.inputmask", function() {
@@ -1021,6 +1024,7 @@
                 numericInput: !1,
                 rightAlign: !1,
                 radixPoint: "",
+                radixFocus: !1,
                 nojumps: !1,
                 nojumpsThreshold: 0,
                 keepStatic: void 0,

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

@@ -29,6 +29,7 @@
             digitsOptional: !0,
             groupSeparator: "",
             radixPoint: ".",
+            radixFocus: !0,
             groupSize: 3,
             autoGroup: !1,
             allowPlus: !0,

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

@@ -872,8 +872,11 @@
                     $(input).is(":focus") && setTimeout(function() {
                         var selectedCaret = caret(input);
                         if (selectedCaret.begin == selectedCaret.end) {
-                            var clickPosition = isRTL ? TranslatePosition(selectedCaret.begin) : selectedCaret.begin, lvp = getLastValidPosition(clickPosition), lastPosition = seekNext(lvp);
-                            lastPosition >= clickPosition ? isMask(clickPosition) ? caret(input, clickPosition) : caret(input, -1 == lvp && "" != opts.radixPoint ? $.inArray(opts.radixPoint, getBuffer()) : seekNext(clickPosition)) : caret(input, lastPosition);
+                            var clickPosition = isRTL ? TranslatePosition(selectedCaret.begin) : selectedCaret.begin, lvp = getLastValidPosition(clickPosition);
+                            if (-1 == lvp && opts.radixFocus && "" != opts.radixPoint && -1 != $.inArray(opts.radixPoint, getBuffer())) caret(input, $.inArray(opts.radixPoint, getBuffer())); else {
+                                var lastPosition = seekNext(lvp);
+                                lastPosition > clickPosition ? caret(input, isMask(clickPosition) ? clickPosition : seekNext(clickPosition)) : caret(input, lastPosition);
+                            }
                         }
                     }, 0);
                 }).bind("dblclick.inputmask", function() {
@@ -1019,6 +1022,7 @@
                 numericInput: !1,
                 rightAlign: !1,
                 radixPoint: "",
+                radixFocus: !1,
                 nojumps: !1,
                 nojumpsThreshold: 0,
                 keepStatic: void 0,
@@ -1749,6 +1753,7 @@
             digitsOptional: !0,
             groupSeparator: "",
             radixPoint: ".",
+            radixFocus: !0,
             groupSize: 3,
             autoGroup: !1,
             allowPlus: !0,

+ 12 - 8
js/jquery.inputmask.js

@@ -1619,14 +1619,17 @@
                                 var selectedCaret = caret(input);
                                 if (selectedCaret.begin == selectedCaret.end) {
                                     var clickPosition = isRTL ? TranslatePosition(selectedCaret.begin) : selectedCaret.begin,
-                                        lvp = getLastValidPosition(clickPosition),
-                                        lastPosition = seekNext(lvp);
-                                    if (clickPosition <= lastPosition) {
-                                        if (isMask(clickPosition))
-                                            caret(input, clickPosition);
-                                        else caret(input, lvp == -1 && opts.radixPoint != "" ? $.inArray(opts.radixPoint, getBuffer()) : seekNext(clickPosition));
-                                    } else {
-                                        caret(input, lastPosition);
+                                        lvp = getLastValidPosition(clickPosition);
+
+                                    if (lvp == -1 && opts.radixFocus && opts.radixPoint != "" && $.inArray(opts.radixPoint, getBuffer()) != -1)
+                                        caret(input, $.inArray(opts.radixPoint, getBuffer()));
+                                    else {
+                                        var lastPosition = seekNext(lvp);
+                                        if (clickPosition < lastPosition) {
+                                            caret(input, isMask(clickPosition) ? clickPosition : seekNext(clickPosition));
+                                        } else {
+                                            caret(input, lastPosition);
+                                        }
                                     }
                                 }
                             }, 0);
@@ -1862,6 +1865,7 @@
                 rightAlign: false, //align to the right
                 //numeric basic properties
                 radixPoint: "", //".", // | ","
+                radixFocus: false, //position caret to radixpoint on initial click
                 //numeric basic properties
                 nojumps: false, //do not jump over fixed parts in the mask
                 nojumpsThreshold: 0, //start nojumps as of

+ 1 - 0
js/jquery.inputmask.numeric.extensions.js

@@ -53,6 +53,7 @@ Optional extensions on the jquery.inputmask base
             digitsOptional: true,
             groupSeparator: "",//",", // | "."
             radixPoint: ".",
+            radixFocus: true,
             groupSize: 3,
             autoGroup: false,
             allowPlus: true,

+ 1 - 1
qunit/tests_numericinput.js

@@ -195,7 +195,7 @@ asyncTest("inputmask({ mask: \"€ 999.999.999,99\", numericInput: true }); - 12
     }, 0);
 });
 
-asyncTest("inputmask({ mask: \"€ 999.999.999,99\", { numericInput: true, radixPoint: \",\" }); - 123 - radixpoint has no logic anymore in base", function () {
+asyncTest("inputmask({ mask: \"€ 999.999.999,99\", { numericInput: true, radixPoint: \",\" }); - 123", function () {
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $("#testmask").inputmask('€ 999.999.999,99', { numericInput: true, radixPoint: "," });