|
|
@@ -680,19 +680,19 @@
|
|
|
}
|
|
|
|
|
|
function getMaskLength() {
|
|
|
- if (opts.getMaskLength)
|
|
|
- return opts.getMaskLength(getActiveBufferTemplate(), getActiveMaskSet()['greedy'], getActiveMaskSet()['repeat'], getActiveBuffer(), opts);
|
|
|
-
|
|
|
- var buffer = getActiveBufferTemplate(), greedy = getActiveMaskSet()['greedy'], repeat = getActiveMaskSet()['repeat'], currentBuffer = getActiveBuffer();
|
|
|
- var calculatedLength = buffer.length;
|
|
|
- if (!greedy) {
|
|
|
- if (repeat == "*" || repeat == "+") {
|
|
|
- calculatedLength = currentBuffer.length + 1;
|
|
|
- } else if (repeat > 1) {
|
|
|
- calculatedLength += (buffer.length * (repeat - 1));
|
|
|
+ var buffer=getActiveBufferTemplate(), greedy=getActiveMaskSet()['greedy'], repeat=getActiveMaskSet()['repeat'], currentBuffer=getActiveBuffer();
|
|
|
+
|
|
|
+ if($.isFunction(opts.getMaskLength)) return opts.getMaskLength(buffer, greedy, repeat, currentBuffer, opts);
|
|
|
+
|
|
|
+ var calculatedLength = buffer.length;
|
|
|
+ if (!greedy) {
|
|
|
+ if (repeat == "*") {
|
|
|
+ calculatedLength = currentBuffer.length + 1;
|
|
|
+ } else if (repeat > 1) {
|
|
|
+ calculatedLength += (buffer.length * (repeat - 1));
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- return calculatedLength;
|
|
|
+ return calculatedLength;
|
|
|
}
|
|
|
|
|
|
//pos: from position
|
|
|
@@ -836,7 +836,7 @@
|
|
|
return isMask(index) && isValid(index, element, true) ? element : null;
|
|
|
});
|
|
|
var unmaskedValue = (isRTL ? umValue.reverse() : umValue).join('');
|
|
|
- return opts.onUnMask != undefined ? opts.onUnMask.call($input, getActiveBuffer().join(''), unmaskedValue, opts) : unmaskedValue;
|
|
|
+ return $.isFunction(opts.onUnMask) ? opts.onUnMask.call($input, getActiveBuffer().join(''), unmaskedValue, opts) : unmaskedValue;
|
|
|
} else {
|
|
|
return $input[0]._valueGet();
|
|
|
}
|
|
|
@@ -890,6 +890,7 @@
|
|
|
}
|
|
|
}
|
|
|
function isComplete(buffer) { //return true / false / undefined (repeat *)
|
|
|
+ if($.isFunction(opts.isComplete)) return opts.isComplete.call($el, buffer, opts);
|
|
|
if (opts.repeat == "*") return undefined;
|
|
|
var complete = false, highestValidPosition = 0, currentActiveMasksetIndex = activeMasksetIndex;
|
|
|
$.each(masksets, function (ndx, ms) {
|
|
|
@@ -1396,7 +1397,7 @@
|
|
|
return true;
|
|
|
}
|
|
|
setTimeout(function () {
|
|
|
- var pasteValue = opts.onBeforePaste != undefined ? opts.onBeforePaste.call(input, input._valueGet(), opts) : input._valueGet();
|
|
|
+ var pasteValue = $.isFunction(opts.onBeforePaste) ? opts.onBeforePaste.call(input, input._valueGet(), opts) : input._valueGet();
|
|
|
checkVal(input, false, false, pasteValue.split(''), true);
|
|
|
writeBuffer(input, getActiveBuffer());
|
|
|
if (isComplete(getActiveBuffer()) === true)
|
|
|
@@ -1627,7 +1628,7 @@
|
|
|
$el.bind("input.inputmask", pasteEvent);
|
|
|
|
|
|
//apply mask
|
|
|
- var initialValue = opts.onBeforeMask != undefined ? opts.onBeforeMask.call(el, el._valueGet(), opts) : el._valueGet();
|
|
|
+ var initialValue = $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(el, el._valueGet(), opts) : el._valueGet();
|
|
|
checkVal(el, true, false, initialValue.split(''));
|
|
|
valueOnFocus = getActiveBuffer().join('');
|
|
|
// Wrap document.activeElement in a try/catch block since IE9 throw "Unspecified error" if document.activeElement is undefined when we are in an IFrame.
|
|
|
@@ -1756,7 +1757,8 @@
|
|
|
},
|
|
|
//specify keycodes which should not be considered in the keypress event, otherwise the preventDefault will stop their default behavior especially in FF
|
|
|
ignorables: [8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123],
|
|
|
- getMaskLength: undefined
|
|
|
+ getMaskLength: undefined, //override for getMaskLength - args => buffer, greedy, repeat, currentBuffer, opts - return length
|
|
|
+ isComplete: undefined //override for isComplete - args => buffer, opts - return true || false
|
|
|
},
|
|
|
escapeRegex: function (str) {
|
|
|
var specials = ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'];
|