|
|
@@ -18,6 +18,7 @@
|
|
|
}
|
|
|
(function (Inputmask) {
|
|
|
var $ = Inputmask.dependencyLib;
|
|
|
+
|
|
|
function autoEscape(txt, opts) {
|
|
|
var escapedTxt = "";
|
|
|
for (var i = 0; i < txt.length; i++) {
|
|
|
@@ -36,14 +37,14 @@
|
|
|
return escapedTxt;
|
|
|
}
|
|
|
|
|
|
- function alignDigits(buffer, opts) {
|
|
|
- if (opts.numericInput) {
|
|
|
+ function alignDigits(buffer, digits, opts) {
|
|
|
+ if (digits > 0) {
|
|
|
var radixPosition = $.inArray(opts.radixPoint, buffer);
|
|
|
if (radixPosition === -1) {
|
|
|
buffer.push(opts.radixPoint);
|
|
|
radixPosition = buffer.length - 1;
|
|
|
}
|
|
|
- for (var i = 1; i <= opts.digits; i++) {
|
|
|
+ for (var i = 1; i <= digits; i++) {
|
|
|
buffer[radixPosition + i] = buffer[radixPosition + i] || "0";
|
|
|
}
|
|
|
}
|
|
|
@@ -569,6 +570,23 @@
|
|
|
initialValue = initialValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), "");
|
|
|
}
|
|
|
|
|
|
+ var digits = 0;
|
|
|
+ if (opts.radixPoint !== "" && initialValue.indexOf(opts.radixPoint) !== -1) {
|
|
|
+ var valueParts = initialValue.split(opts.radixPoint),
|
|
|
+ digits = valueParts[1].match(new RegExp("\\d*"))[0].length,
|
|
|
+ digitsFactor = Math.pow(10, digits || 1);
|
|
|
+ if (isFinite(opts.digits)) {
|
|
|
+ digits = parseInt(opts.digits);
|
|
|
+ digitsFactor = Math.pow(10, digits);
|
|
|
+ }
|
|
|
+
|
|
|
+ //make the initialValue a valid javascript number for the parsefloat
|
|
|
+ initialValue = initialValue.replace(Inputmask.escapeRegex(opts.radixPoint), ".");
|
|
|
+ if (isFinite(initialValue))
|
|
|
+ initialValue = Math.round(parseFloat(initialValue) * digitsFactor) / digitsFactor;
|
|
|
+ initialValue = initialValue.toString().replace(".", opts.radixPoint);
|
|
|
+ }
|
|
|
+
|
|
|
if (opts.digits === 0) {
|
|
|
if (initialValue.indexOf(".") !== -1) {
|
|
|
initialValue = initialValue.substring(0, initialValue.indexOf("."));
|
|
|
@@ -577,22 +595,7 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (opts.radixPoint !== "" && isFinite(opts.digits)) {
|
|
|
- if (initialValue.indexOf(opts.radixPoint) !== -1) {
|
|
|
- var valueParts = initialValue.split(opts.radixPoint),
|
|
|
- decPart = valueParts[1].match(new RegExp("\\d*"))[0];
|
|
|
- if (parseInt(opts.digits) < decPart.toString().length) {
|
|
|
- var digitsFactor = Math.pow(10, parseInt(opts.digits));
|
|
|
- //make the initialValue a valid javascript number for the parsefloat
|
|
|
- initialValue = initialValue.replace(Inputmask.escapeRegex(opts.radixPoint), ".");
|
|
|
- initialValue = Math.round(parseFloat(initialValue) * digitsFactor) / digitsFactor;
|
|
|
- initialValue = initialValue.toString().replace(".", opts.radixPoint);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
- return alignDigits(initialValue.toString().split(""), opts).join("");
|
|
|
+ return alignDigits(initialValue.toString().split(""), digits, opts).join("");
|
|
|
},
|
|
|
onKeyDown: function (e, buffer, caretPos, opts) {
|
|
|
//TODO FIXME
|