Robin Herbots 5 years ago
parent
commit
e4030e33b2

+ 1 - 0
CHANGELOG.md

@@ -6,6 +6,7 @@
 - update datetime alias
  
 ### Fixed
+- setvalue() "removes" number before comma when "positionCaretOnClick" and "digitsOptional" are set. #2457
 - Date field results into buggy output: 30/02/yy0y #2456
 - cant enter the leap year using jit masking #2453
 - Basically the same issue appears also when you have a valid date in the input but want to change something. #2435

+ 1 - 1
bower.json

@@ -1,6 +1,6 @@
 {
   "name": "inputmask",
-  "version": "5.0.6-beta.34",
+  "version": "5.0.6-beta.35",
   "main": [
 	  "./index.js",
     "./css/inputmask.css"

+ 1 - 1
composer.json

@@ -1,7 +1,7 @@
 {
   "name": "robinherbots/inputmask",
   "description": "Inputmask is a javascript library which creates an input mask.  Inputmask can run against vanilla javascript, jQuery and jqlite.",
-  "version": "5.0.6-beta.34",
+  "version": "5.0.6-beta.35",
   "type": "library",
   "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
   "homepage": "http://robinherbots.github.io/Inputmask",

+ 8 - 5
dist/inputmask.js

@@ -3,7 +3,7 @@
  * https://github.com/RobinHerbots/Inputmask
  * Copyright (c) 2010 - 2021 Robin Herbots
  * Licensed under the MIT license
- * Version: 5.0.6-beta.34
+ * Version: 5.0.6-beta.35
  */
 !function webpackUniversalModuleDefinition(root, factory) {
     if ("object" == typeof exports && "object" == typeof module) module.exports = factory(); else if ("function" == typeof define && define.amd) define([], factory); else {
@@ -69,7 +69,7 @@
                 def: positions[bl] ? positions[bl].match : void 0
             } : bl;
         }
-        function determineNewCaretPosition(selectedCaret, tabbed) {
+        function determineNewCaretPosition(selectedCaret, tabbed, positionCaretOnClick) {
             var inputmask = this, maskset = this.maskset, opts = this.opts;
             function doRadixFocus(clickPos) {
                 if ("" !== opts.radixPoint && 0 !== opts.digits) {
@@ -87,7 +87,8 @@
             }
             if (tabbed && (inputmask.isRTL ? selectedCaret.end = selectedCaret.begin : selectedCaret.begin = selectedCaret.end), 
             selectedCaret.begin === selectedCaret.end) {
-                switch (opts.positionCaretOnClick) {
+                switch (positionCaretOnClick = positionCaretOnClick || opts.positionCaretOnClick, 
+                positionCaretOnClick) {
                   case "none":
                     break;
 
@@ -992,7 +993,8 @@
             maskset.tests = {}, initialNdx = opts.radixPoint ? _positioning.determineNewCaretPosition.call(inputmask, {
                 begin: 0,
                 end: 0
-            }).begin : 0, maskset.p = initialNdx, inputmask.caretPos = {
+            }, !1, !1 === opts.__financeInput ? "radixFocus" : void 0).begin : 0, maskset.p = initialNdx, 
+            inputmask.caretPos = {
                 begin: initialNdx
             };
             var staticMatches = [], prevCaretPos = inputmask.caretPos;
@@ -2637,7 +2639,7 @@
                 inputType: "text",
                 unmaskAsNumber: !1,
                 roundingFN: Math.round,
-                inputmode: "numeric",
+                inputmode: "decimal",
                 shortcuts: {
                     k: "000",
                     m: "000000"
@@ -2873,6 +2875,7 @@
             },
             integer: {
                 alias: "numeric",
+                inputmode: "numeric",
                 digits: 0
             },
             percentage: {

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


+ 8 - 5
dist/jquery.inputmask.js

@@ -3,7 +3,7 @@
  * https://github.com/RobinHerbots/Inputmask
  * Copyright (c) 2010 - 2021 Robin Herbots
  * Licensed under the MIT license
- * Version: 5.0.6-beta.34
+ * Version: 5.0.6-beta.35
  */
 !function webpackUniversalModuleDefinition(root, factory) {
     if ("object" == typeof exports && "object" == typeof module) module.exports = factory(require("jquery")); else if ("function" == typeof define && define.amd) define([ "jquery" ], factory); else {
@@ -69,7 +69,7 @@
                 def: positions[bl] ? positions[bl].match : void 0
             } : bl;
         }
-        function determineNewCaretPosition(selectedCaret, tabbed) {
+        function determineNewCaretPosition(selectedCaret, tabbed, positionCaretOnClick) {
             var inputmask = this, maskset = this.maskset, opts = this.opts;
             function doRadixFocus(clickPos) {
                 if ("" !== opts.radixPoint && 0 !== opts.digits) {
@@ -87,7 +87,8 @@
             }
             if (tabbed && (inputmask.isRTL ? selectedCaret.end = selectedCaret.begin : selectedCaret.begin = selectedCaret.end), 
             selectedCaret.begin === selectedCaret.end) {
-                switch (opts.positionCaretOnClick) {
+                switch (positionCaretOnClick = positionCaretOnClick || opts.positionCaretOnClick, 
+                positionCaretOnClick) {
                   case "none":
                     break;
 
@@ -972,7 +973,8 @@
             maskset.tests = {}, initialNdx = opts.radixPoint ? _positioning.determineNewCaretPosition.call(inputmask, {
                 begin: 0,
                 end: 0
-            }).begin : 0, maskset.p = initialNdx, inputmask.caretPos = {
+            }, !1, !1 === opts.__financeInput ? "radixFocus" : void 0).begin : 0, maskset.p = initialNdx, 
+            inputmask.caretPos = {
                 begin: initialNdx
             };
             var staticMatches = [], prevCaretPos = inputmask.caretPos;
@@ -2500,7 +2502,7 @@
                 inputType: "text",
                 unmaskAsNumber: !1,
                 roundingFN: Math.round,
-                inputmode: "numeric",
+                inputmode: "decimal",
                 shortcuts: {
                     k: "000",
                     m: "000000"
@@ -2736,6 +2738,7 @@
             },
             integer: {
                 alias: "numeric",
+                inputmode: "numeric",
                 digits: 0
             },
             percentage: {

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


+ 4 - 1
lib/inputHandling.js

@@ -73,7 +73,10 @@ function checkVal(input, writeOut, strict, nptvl, initiatingEvent) {
 
 	resetMaskSet.call(inputmask);
 	maskset.tests = {}; //reset tests ~ possible after alternating
-	initialNdx = opts.radixPoint ? determineNewCaretPosition.call(inputmask, {begin: 0, end: 0}).begin : 0;
+	initialNdx = opts.radixPoint ? determineNewCaretPosition.call(inputmask, {
+		begin: 0,
+		end: 0
+	}, false, opts.__financeInput === false ? "radixFocus" : undefined).begin : 0;
 	maskset.p = initialNdx;
 	inputmask.caretPos = {begin: initialNdx};
 

+ 3 - 2
lib/positioning.js

@@ -151,7 +151,7 @@ function determineLastRequiredPosition(returnDefinition) {
 }
 
 //tobe put on prototype?
-function determineNewCaretPosition(selectedCaret, tabbed) {
+function determineNewCaretPosition(selectedCaret, tabbed, positionCaretOnClick) {
 	const inputmask = this,
 		maskset = this.maskset,
 		opts = this.opts;
@@ -183,7 +183,8 @@ function determineNewCaretPosition(selectedCaret, tabbed) {
 		}
 	}
 	if (selectedCaret.begin === selectedCaret.end) {
-		switch (opts.positionCaretOnClick) {
+		positionCaretOnClick = positionCaretOnClick || opts.positionCaretOnClick;
+		switch (positionCaretOnClick) {
 			case "none":
 				break;
 			case "select":

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "inputmask",
-  "version": "5.0.6-beta.34",
+  "version": "5.0.6-beta.35",
   "description": "Inputmask is a javascript library which creates an input mask.  Inputmask can run against vanilla javascript, jQuery and jqlite.",
   "main": "dist/inputmask.js",
   "files": [

+ 19 - 3
qunit/tests_numeric.js

@@ -962,7 +962,7 @@ export default function (qunit, Inputmask) {
 
 	});
 
-	qunit.test("inputmask(\"decimal\ placeholder :\"\" digitsoptional: false) - 123 - loostro", function (assert) {
+	qunit.test("inputmask(\"decimal placeholder :\"\" digitsoptional: false) - 123 - loostro", function (assert) {
 		var done = assert.async(),
 			$fixture = $("#qunit-fixture");
 		$fixture.append("<input type=\"text\" id=\"testmask\" value=\"0,00\" />");
@@ -985,7 +985,7 @@ export default function (qunit, Inputmask) {
 		}, 5);
 	});
 
-	qunit.test("inputmask(\"decimal\ placeholder :\"0\" digitsoptional: false) - .12 - YodaJM", function (assert) {
+	qunit.test("inputmask(\"decimal placeholder :\"0\" digitsoptional: false) - .12 - YodaJM", function (assert) {
 		var done = assert.async(),
 			$fixture = $("#qunit-fixture");
 		$fixture.append("<input type=\"text\" id=\"testmask\" />");
@@ -2294,4 +2294,20 @@ export default function (qunit, Inputmask) {
 
 		assert.equal(testmask.value, "-54 %", "Result \"" + testmask.value + "\"");
 	});
-};
+
+	qunit.test("setvalue() removes number before comma when positionCaretOnClick and digitsOptional are set. #2457", function (assert) {
+		var $fixture = $("#qunit-fixture");
+		$fixture.append("<input type=\"text\" id=\"testmask\"/>");
+		var testmask = document.getElementById("testmask");
+		Inputmask({
+			alias:                  "numeric",
+			digits:                 2,
+			digitsOptional:         false,
+			positionCaretOnClick:   "select",
+			suffix:                 " €"
+		}).mask(testmask);
+		testmask.inputmask.setValue(12.36);
+
+		assert.equal(testmask.value, "12.36 €", "Result \"" + testmask.value + "\"");
+	});
+}