|
|
@@ -10,6 +10,71 @@ Optional extensions on the jquery.inputmask base
|
|
|
(function ($) {
|
|
|
//number aliases
|
|
|
$.extend($.inputmask.defaults.aliases, {
|
|
|
+ 'numeric': {
|
|
|
+ mask: function (opts) {
|
|
|
+ var mask = opts.prefix + "~{1," + opts.integerDigits + "}";
|
|
|
+ mask += "[" + opts.radixPoint + "~{" + opts.digits + "}]";
|
|
|
+ mask += opts.suffix;
|
|
|
+ return mask;
|
|
|
+ },
|
|
|
+ placeholder: "",
|
|
|
+ greedy: false,
|
|
|
+ numericInput: false,
|
|
|
+ isNumeric: false,
|
|
|
+ digits: "2", //number of fractionalDigits
|
|
|
+ groupSeparator: "",//",", // | "."
|
|
|
+ radixPoint: ".",
|
|
|
+ groupSize: 3,
|
|
|
+ autoGroup: false,
|
|
|
+ allowPlus: true,
|
|
|
+ allowMinus: true,
|
|
|
+ integerDigits: "20", //number of integerDigits
|
|
|
+ defaultValue: "",
|
|
|
+ prefix: "",
|
|
|
+ suffix: "",
|
|
|
+ postFormat: function (buffer, pos, reformatOnly, opts) {
|
|
|
+ if (opts.groupSeparator == "") return pos;
|
|
|
+ var cbuf = buffer.slice(),
|
|
|
+ radixPos = $.inArray(opts.radixPoint, buffer);
|
|
|
+ if (!reformatOnly) {
|
|
|
+ cbuf.splice(pos, 0, "?"); //set position indicator
|
|
|
+ }
|
|
|
+ var bufVal = cbuf.join('');
|
|
|
+ if (opts.autoGroup || (reformatOnly && bufVal.indexOf(opts.groupSeparator) != -1)) {
|
|
|
+ var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator);
|
|
|
+ bufVal = bufVal.replace(new RegExp(escapedGroupSeparator, "g"), '');
|
|
|
+ var radixSplit = bufVal.split(opts.radixPoint);
|
|
|
+ bufVal = radixSplit[0];
|
|
|
+ var reg = new RegExp('([-\+]?[\\d\?]+)([\\d\?]{' + opts.groupSize + '})');
|
|
|
+ while (reg.test(bufVal)) {
|
|
|
+ bufVal = bufVal.replace(reg, '$1' + opts.groupSeparator + '$2');
|
|
|
+ bufVal = bufVal.replace(opts.groupSeparator + opts.groupSeparator, opts.groupSeparator);
|
|
|
+ }
|
|
|
+ if (radixSplit.length > 1)
|
|
|
+ bufVal += opts.radixPoint + radixSplit[1];
|
|
|
+ }
|
|
|
+ buffer.length = bufVal.length; //align the length
|
|
|
+ for (var i = 0, l = bufVal.length; i < l; i++) {
|
|
|
+ buffer[i] = bufVal.charAt(i);
|
|
|
+ }
|
|
|
+ var newPos = $.inArray("?", buffer);
|
|
|
+ if (!reformatOnly) buffer.splice(newPos, 1);
|
|
|
+
|
|
|
+ return reformatOnly ? pos : newPos;
|
|
|
+ },
|
|
|
+ definitions: {
|
|
|
+ '~': {
|
|
|
+ validator: function (chrs, buffer, pos, strict, opts) {
|
|
|
+ var isValid = new RegExp("[0-9]").test(chrs);
|
|
|
+ return isValid;
|
|
|
+ },
|
|
|
+ cardinality: 1,
|
|
|
+ prevalidator: null
|
|
|
+ }
|
|
|
+ },
|
|
|
+ insertMode: true,
|
|
|
+ autoUnmask: false
|
|
|
+ },
|
|
|
'decimal': {
|
|
|
mask: "~",
|
|
|
placeholder: "",
|
|
|
@@ -64,7 +129,7 @@ Optional extensions on the jquery.inputmask base
|
|
|
var escapedRadixPoint = $.inputmask.escapeRegex.call(this, opts.radixPoint);
|
|
|
var digitExpression = isNaN(opts.digits) ? opts.digits : '{0,' + opts.digits + '}';
|
|
|
var integerExpression = isNaN(opts.integerDigits) ? opts.integerDigits : '{1,' + opts.integerDigits + '}';
|
|
|
- var signedExpression = opts.allowPlus || opts.allowMinus ? "[" + (opts.allowPlus ? "\+" : "") + (opts.allowMinus ? "-" : "") + "]?" : "";
|
|
|
+ var signedExpression = opts.allowPlus || opts.allowMinus ? "[" + (opts.allowPlus ? "\+" : "") + (opts.allowMinus ? "-" : "") + "]?" : "";
|
|
|
|
|
|
var currentRegExp = "^" + signedExpression + "\\d" + integerExpression + "(" + escapedRadixPoint + "\\d" + digitExpression + ")?$";
|
|
|
return new RegExp(currentRegExp);
|