|
|
@@ -3,7 +3,7 @@ Input Mask plugin extensions
|
|
|
http://github.com/RobinHerbots/jquery.inputmask
|
|
|
Copyright (c) 2010 - 2012 Robin Herbots
|
|
|
Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
|
|
|
-Version: 1.0.4
|
|
|
+Version: 1.0.10.c
|
|
|
|
|
|
Optional extensions on the jquery.inputmask base
|
|
|
*/
|
|
|
@@ -36,7 +36,7 @@ Optional extensions on the jquery.inputmask base
|
|
|
var $input = $(this), input = this;
|
|
|
if (e.keyCode == opts.keyCode.TAB) {
|
|
|
var nptStr = input._valueGet();
|
|
|
- var radixPosition = nptStr.indexOf(opts.radixPoint[opts.radixPoint.length - 1]);
|
|
|
+ var radixPosition = nptStr.indexOf(opts.radixPoint);
|
|
|
if (radixPosition != -1) {
|
|
|
for (var i = 1; i < opts.digits; i++) {
|
|
|
if (nptStr[radixPosition + i]) nptStr = nptStr + "0";
|
|
|
@@ -51,20 +51,26 @@ Optional extensions on the jquery.inputmask base
|
|
|
function digitExpression() {
|
|
|
return isNaN(opts.digits) ? opts.digits : '{0,' + opts.digits + '}';
|
|
|
}
|
|
|
+ function radixPointExpression() {
|
|
|
+ return opts.radixPoint == '.' ? "\\" + opts.radixPoint : opts.radixPoint;
|
|
|
+ }
|
|
|
+ function separatorExpression() {
|
|
|
+ return opts.groupSeparator == '.' ? "\\" + opts.groupSeparator : opts.groupSeparator;
|
|
|
+ }
|
|
|
var cbuf = buffer.slice();
|
|
|
cbuf.splice(pos, 0, chrs);
|
|
|
var bufferStr = cbuf.join('');
|
|
|
- var isValid = opts.regex.number(opts.groupSeparator, opts.groupSize, opts.radixPoint, digitExpression()).test(bufferStr);
|
|
|
+ var isValid = opts.regex.number(separatorExpression(), opts.groupSize, radixPointExpression(), digitExpression()).test(bufferStr);
|
|
|
if (!isValid) {
|
|
|
if (strict) { //shiftL & shiftR use strict only validate from 0 to position
|
|
|
var cbuf = buffer.slice(0, pos);
|
|
|
cbuf.splice(pos, 0, chrs);
|
|
|
var bufferStr = cbuf.join('');
|
|
|
- var isValid = opts.regex.number(opts.groupSeparator, opts.groupSize, opts.radixPoint, digitExpression()).test(bufferStr);
|
|
|
+ var isValid = opts.regex.number(separatorExpression(), opts.groupSize, radixPointExpression(), digitExpression()).test(bufferStr);
|
|
|
}
|
|
|
else {
|
|
|
if (bufferStr == opts.radixPoint) {
|
|
|
- isValid = opts.regex.number(opts.groupSeparator, opts.groupSize, opts.radixPoint, digitExpression()).test("0" + bufferStr);
|
|
|
+ isValid = opts.regex.number(separatorExpression(), opts.groupSize, radixPointExpression(), digitExpression()).test("0" + bufferStr);
|
|
|
if (isValid) {
|
|
|
buffer[pos] = "0";
|
|
|
pos++;
|
|
|
@@ -75,13 +81,17 @@ Optional extensions on the jquery.inputmask base
|
|
|
}
|
|
|
//grouping
|
|
|
if (opts.autoGroup && isValid != false && !strict) {
|
|
|
- var firstGroupPos = buffer.length % opts.groupSize;
|
|
|
- if (buffer.length >= opts.groupSize && firstGroupPos >= 0) {
|
|
|
- if (buffer[firstGroupPos] != opts.groupSeparator[opts.groupSeparator.length - 1]) {
|
|
|
- buffer.splice(firstGroupPos + 1, 0, opts.groupSeparator[opts.groupSeparator.length - 1]);
|
|
|
- return { "pos": buffer.length + 1 };
|
|
|
- }
|
|
|
+ var bufVal = buffer.join('') + chrs;
|
|
|
+ bufVal = bufVal.replace(new RegExp(separatorExpression(), "g"), '');
|
|
|
+ var reg = new RegExp('(-?[0-9]+)([0-9]{3})');
|
|
|
+ while (reg.test(bufVal)) {
|
|
|
+ bufVal = bufVal.replace(reg, '$1' + opts.groupSeparator + '$2');
|
|
|
}
|
|
|
+ for (var i = 0, l = bufVal.length - 1; i < l; i++) {
|
|
|
+ buffer[i] = bufVal.charAt(i);
|
|
|
+ }
|
|
|
+
|
|
|
+ return { "pos": buffer.length + 1 };
|
|
|
}
|
|
|
|
|
|
return isValid;
|