|
|
@@ -534,7 +534,15 @@
|
|
|
function getBufferElement(position) {
|
|
|
return void 0 == getMaskSet().validPositions[position] ? getPlaceholder(position) : getMaskSet().validPositions[position].input;
|
|
|
}
|
|
|
- function writeBuffer(input, buffer, caretPos, triggerInputEvent) {
|
|
|
+ function writeBuffer(input, buffer, caretPos, event, triggerInputEvent) {
|
|
|
+ if (event && $.isFunction(opts.onBeforeWrite)) {
|
|
|
+ var result = opts.onBeforeWrite.call(input, event, buffer, caretPos, opts);
|
|
|
+ if (result && result.refreshFromBuffer) {
|
|
|
+ var refresh = result.refreshFromBuffer;
|
|
|
+ refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, result.buffer),
|
|
|
+ resetMaskSet(!0), caretPos = result.caret || caretPos;
|
|
|
+ }
|
|
|
+ }
|
|
|
input._valueSet(buffer.join("")), void 0 != caretPos && caret(input, caretPos),
|
|
|
triggerInputEvent === !0 && (skipInputEvent = !0, $(input).trigger("input"));
|
|
|
}
|
|
|
@@ -558,7 +566,7 @@
|
|
|
var staticInput = getBufferTemplate().slice(0, seekNext(-1)).join(""), matches = inputValue.join("").match(new RegExp(escapeRegex(staticInput), "g"));
|
|
|
matches && matches.length > 0 && inputValue.splice(0, staticInput.length * matches.length);
|
|
|
var charCodes = "", initialNdx = 0;
|
|
|
- if ($.each(inputValue, function(ndx, charCode) {
|
|
|
+ $.each(inputValue, function(ndx, charCode) {
|
|
|
var keypress = $.Event("keypress");
|
|
|
keypress.which = charCode.charCodeAt(0), charCodes += charCode;
|
|
|
var lvp = getLastValidPosition(), lvTest = getMaskSet().validPositions[lvp], nextTest = getTestTemplate(lvp + 1, lvTest ? lvTest.locator.slice() : void 0, lvp);
|
|
|
@@ -567,10 +575,7 @@
|
|
|
keypressEvent.call(input, keypress, !0, !1, strict, pos), initialNdx = pos + 1,
|
|
|
charCodes = "";
|
|
|
} else keypressEvent.call(input, keypress, !0, !1, !0, lvp + 1);
|
|
|
- }), writeOut) {
|
|
|
- var keypressResult = opts.onKeyPress.call(this, void 0, getBuffer(), 0, opts);
|
|
|
- handleOnKeyResult(input, keypressResult), writeBuffer(input, getBuffer(), $(input).is(":focus") ? seekNext(getLastValidPosition(0)) : void 0);
|
|
|
- }
|
|
|
+ }), writeOut && writeBuffer(input, getBuffer(), $(input).is(":focus") ? seekNext(getLastValidPosition(0)) : void 0, $.Event("checkval"));
|
|
|
}
|
|
|
function escapeRegex(str) {
|
|
|
return $.inputmask.escapeRegex.call(this, str);
|
|
|
@@ -730,7 +735,7 @@
|
|
|
$(npt).bind("mouseenter.inputmask", function() {
|
|
|
var $input = $(this), input = this, value = input._valueGet();
|
|
|
"" != value && value != getBuffer().join("") && (this._valueSet($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(el, value, opts) || value : value),
|
|
|
- $input.trigger("setvalue"));
|
|
|
+ $input.triggerHandler("setvalue.inputmask"));
|
|
|
});
|
|
|
//!! the bound handlers are executed in the order they where bound
|
|
|
var events = $._data(npt).events, handlers = events.mouseover;
|
|
|
@@ -783,17 +788,10 @@
|
|
|
var firstMaskedPos = getLastValidPosition(pos.begin);
|
|
|
firstMaskedPos < pos.begin ? (-1 == firstMaskedPos && resetMaskSet(), getMaskSet().p = seekNext(firstMaskedPos)) : getMaskSet().p = pos.begin;
|
|
|
}
|
|
|
- function handleOnKeyResult(input, keyResult, caretPos) {
|
|
|
- if (keyResult && keyResult.refreshFromBuffer) {
|
|
|
- var refresh = keyResult.refreshFromBuffer;
|
|
|
- refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, keyResult.buffer),
|
|
|
- resetMaskSet(!0), void 0 != caretPos && (writeBuffer(input, getBuffer()), caret(input, keyResult.caret || caretPos.begin, keyResult.caret || caretPos.end));
|
|
|
- }
|
|
|
- }
|
|
|
function keydownEvent(e) {
|
|
|
var input = this, $input = $(input), k = e.keyCode, pos = caret(input);
|
|
|
k == $.inputmask.keyCode.BACKSPACE || k == $.inputmask.keyCode.DELETE || iphone && 127 == k || e.ctrlKey && 88 == k && !isInputEventSupported("cut") ? (e.preventDefault(),
|
|
|
- 88 == k && (undoValue = getBuffer().join("")), handleRemove(input, k, pos), writeBuffer(input, getBuffer(), getMaskSet().p, undoValue != getBuffer().join("")),
|
|
|
+ 88 == k && (undoValue = getBuffer().join("")), handleRemove(input, k, pos), writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue != getBuffer().join("")),
|
|
|
input._valueGet() == getBufferTemplate().join("") && $input.trigger("cleared"),
|
|
|
opts.showTooltip && $input.prop("title", getMaskSet().mask)) : k == $.inputmask.keyCode.END || k == $.inputmask.keyCode.PAGE_DOWN ? setTimeout(function() {
|
|
|
var caretPos = seekNext(getLastValidPosition());
|
|
|
@@ -805,9 +803,8 @@
|
|
|
}, 0) : k == $.inputmask.keyCode.LEFT && setTimeout(function() {
|
|
|
var caretPos = caret(input);
|
|
|
caret(input, isRTL ? caretPos.begin + 1 : caretPos.begin - 1);
|
|
|
- }, 0)) : (opts.insertMode = !opts.insertMode, caret(input, opts.insertMode || pos.begin != getMaskLength() ? pos.begin : pos.begin - 1));
|
|
|
- var currentCaretPos = caret(input), keydownResult = opts.onKeyDown.call(this, e, getBuffer(), currentCaretPos.begin, opts);
|
|
|
- handleOnKeyResult(input, keydownResult, currentCaretPos), ignorable = -1 != $.inArray(k, opts.ignorables);
|
|
|
+ }, 0)) : (opts.insertMode = !opts.insertMode, caret(input, opts.insertMode || pos.begin != getMaskLength() ? pos.begin : pos.begin - 1)),
|
|
|
+ ignorable = -1 != $.inArray(k, opts.ignorables);
|
|
|
}
|
|
|
function keypressEvent(e, checkval, writeOut, strict, ndx) {
|
|
|
var input = this, $input = $(input), k = e.which || e.charCode || e.keyCode;
|
|
|
@@ -837,26 +834,26 @@
|
|
|
opts.onKeyValidation.call(self, valResult, opts);
|
|
|
}, 0), getMaskSet().writeOutBuffer && valResult !== !1) {
|
|
|
var buffer = getBuffer();
|
|
|
- writeBuffer(input, buffer, checkval ? void 0 : opts.numericInput ? seekPrevious(forwardPosition) : forwardPosition, checkval !== !0),
|
|
|
+ writeBuffer(input, buffer, checkval ? void 0 : opts.numericInput ? seekPrevious(forwardPosition) : forwardPosition, e, checkval !== !0),
|
|
|
checkval !== !0 && setTimeout(function() {
|
|
|
isComplete(buffer) === !0 && $input.trigger("complete");
|
|
|
}, 0);
|
|
|
} else isSlctn && (getMaskSet().buffer = void 0, getMaskSet().validPositions = getMaskSet().undoPositions);
|
|
|
} else isSlctn && (getMaskSet().buffer = void 0, getMaskSet().validPositions = getMaskSet().undoPositions);
|
|
|
- if (opts.showTooltip && $input.prop("title", getMaskSet().mask), checkval) {
|
|
|
- var keyResult = opts.onKeyPress.call(this, e, getBuffer(), forwardPosition, opts);
|
|
|
- keyResult && keyResult.refreshFromBuffer && (handleOnKeyResult(input, keyResult),
|
|
|
- keyResult.caret && (getMaskSet().p = keyResult.caret));
|
|
|
- } else {
|
|
|
- var currentCaretPos = caret(input);
|
|
|
- handleOnKeyResult(input, opts.onKeyPress.call(this, e, getBuffer(), currentCaretPos.begin, opts), currentCaretPos);
|
|
|
+ if (opts.showTooltip && $input.prop("title", getMaskSet().mask), checkval && $.isFunction(opts.onBeforeWrite)) {
|
|
|
+ var result = opts.onBeforeWrite.call(this, e, getBuffer(), forwardPosition, opts);
|
|
|
+ if (result && result.refreshFromBuffer) {
|
|
|
+ var refresh = result.refreshFromBuffer;
|
|
|
+ refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, result.buffer),
|
|
|
+ resetMaskSet(!0), result.caret && (getMaskSet().p = result.caret);
|
|
|
+ }
|
|
|
}
|
|
|
e.preventDefault();
|
|
|
}
|
|
|
}
|
|
|
function keyupEvent(e) {
|
|
|
- var input = ($(this), this), buffer = (e.keyCode, getBuffer()), currentCaretPos = caret(input), keyupResult = opts.onKeyUp.call(this, e, buffer, currentCaretPos.begin, opts);
|
|
|
- handleOnKeyResult(input, keyupResult, currentCaretPos);
|
|
|
+ var buffer = ($(this), e.keyCode, getBuffer());
|
|
|
+ opts.onKeyUp.call(this, e, buffer, opts);
|
|
|
}
|
|
|
function pasteEvent(e) {
|
|
|
var input = this, $input = $(input), inputValue = input._valueGet(!0), caretPos = caret(input);
|
|
|
@@ -911,25 +908,19 @@
|
|
|
opts.removeMaskOnSubmit && $el.inputmask("remove");
|
|
|
}).bind("reset", function() {
|
|
|
setTimeout(function() {
|
|
|
- $el.trigger("setvalue");
|
|
|
+ $el.triggerHandler("setvalue.inputmask");
|
|
|
}, 0);
|
|
|
}), $el.bind("mouseenter.inputmask", function() {
|
|
|
var $input = $(this), input = this;
|
|
|
!$input.is(":focus") && opts.showMaskOnHover && input._valueGet() != getBuffer().join("") && writeBuffer(input, getBuffer());
|
|
|
- }).bind("blur.inputmask", function() {
|
|
|
+ }).bind("blur.inputmask", function(e) {
|
|
|
var $input = $(this), input = this;
|
|
|
if ($input.data("_inputmask")) {
|
|
|
var nptValue = input._valueGet(), buffer = getBuffer().slice();
|
|
|
- if (firstClick = !0, undoValue != buffer.join("") && ($input.change(), undoValue = buffer.join("")),
|
|
|
- "" != nptValue) {
|
|
|
- if (opts.clearMaskOnLostFocus && (nptValue == getBufferTemplate().join("") ? buffer = [] : clearOptionalTail(buffer)),
|
|
|
- isComplete(buffer) === !1 && ($input.trigger("incomplete"), opts.clearIncomplete && (resetMaskSet(),
|
|
|
- buffer = opts.clearMaskOnLostFocus ? [] : getBufferTemplate().slice())), $.isFunction(opts.postProcessOnBlur)) {
|
|
|
- var keyResult = opts.postProcessOnBlur.call(input, buffer, opts);
|
|
|
- keyResult && (handleOnKeyResult(input, keyResult), buffer = getBuffer());
|
|
|
- }
|
|
|
- writeBuffer(input, buffer);
|
|
|
- }
|
|
|
+ firstClick = !0, undoValue != buffer.join("") && ($input.change(), undoValue = buffer.join("")),
|
|
|
+ "" != nptValue && (opts.clearMaskOnLostFocus && (nptValue == getBufferTemplate().join("") ? buffer = [] : clearOptionalTail(buffer)),
|
|
|
+ isComplete(buffer) === !1 && ($input.trigger("incomplete"), opts.clearIncomplete && (resetMaskSet(),
|
|
|
+ buffer = opts.clearMaskOnLostFocus ? [] : getBufferTemplate().slice())), writeBuffer(input, buffer, void 0, e));
|
|
|
}
|
|
|
}).bind("focus.inputmask", function() {
|
|
|
var input = ($(this), this), nptValue = input._valueGet();
|
|
|
@@ -963,12 +954,8 @@
|
|
|
}).bind("cut.inputmask", function(e) {
|
|
|
skipInputEvent = !0;
|
|
|
var input = this, $input = $(input), pos = caret(input);
|
|
|
- handleRemove(input, $.inputmask.keyCode.DELETE, pos);
|
|
|
- var keypressResult = opts.onKeyPress.call(this, e, getBuffer(), getMaskSet().p, opts);
|
|
|
- handleOnKeyResult(input, keypressResult, {
|
|
|
- begin: getMaskSet().p,
|
|
|
- end: getMaskSet().p
|
|
|
- }), input._valueGet() == getBufferTemplate().join("") && $input.trigger("cleared"),
|
|
|
+ handleRemove(input, $.inputmask.keyCode.DELETE, pos), writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue != getBuffer().join("")),
|
|
|
+ input._valueGet() == getBufferTemplate().join("") && $input.trigger("cleared"),
|
|
|
opts.showTooltip && $input.prop("title", getMaskSet().mask);
|
|
|
}).bind("complete.inputmask", opts.oncomplete).bind("incomplete.inputmask", opts.onincomplete).bind("cleared.inputmask", opts.oncleared),
|
|
|
$el.bind("keydown.inputmask", keydownEvent).bind("keypress.inputmask", keypressEvent).bind("keyup.inputmask", keyupEvent),
|
|
|
@@ -1008,7 +995,7 @@
|
|
|
isRTL: opts.numericInput
|
|
|
}), opts.numericInput && (isRTL = !0);
|
|
|
var valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call($el, actionObj.value, opts) || actionObj.value : actionObj.value).split("");
|
|
|
- return checkVal($el, !1, !1, isRTL ? valueBuffer.reverse() : valueBuffer), opts.onKeyPress.call(this, void 0, getBuffer(), 0, opts),
|
|
|
+ return checkVal($el, !1, !1, isRTL ? valueBuffer.reverse() : valueBuffer), $.isFunction(opts.onBeforeWrite) && opts.onBeforeWrite.call(this, void 0, getBuffer(), 0, opts),
|
|
|
actionObj.metadata ? {
|
|
|
value: isRTL ? getBuffer().slice().reverse().join("") : getBuffer().join(""),
|
|
|
metadata: $el.inputmask("getmetadata")
|
|
|
@@ -1094,10 +1081,9 @@
|
|
|
aliases: {},
|
|
|
alias: null,
|
|
|
onKeyUp: $.noop,
|
|
|
- onKeyPress: $.noop,
|
|
|
- onKeyDown: $.noop,
|
|
|
onBeforeMask: void 0,
|
|
|
onBeforePaste: void 0,
|
|
|
+ onBeforeWrite: void 0,
|
|
|
onUnMask: void 0,
|
|
|
showMaskOnFocus: !0,
|
|
|
showMaskOnHover: !0,
|
|
|
@@ -1129,8 +1115,7 @@
|
|
|
}
|
|
|
},
|
|
|
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 ],
|
|
|
- isComplete: void 0,
|
|
|
- postProcessOnBlur: void 0
|
|
|
+ isComplete: void 0
|
|
|
},
|
|
|
keyCode: {
|
|
|
ALT: 18,
|
|
|
@@ -1378,7 +1363,8 @@
|
|
|
var $input = $(this);
|
|
|
if (e.ctrlKey && e.keyCode == $.inputmask.keyCode.RIGHT) {
|
|
|
var today = new Date();
|
|
|
- $input.val(today.getDate().toString() + (today.getMonth() + 1).toString() + today.getFullYear().toString());
|
|
|
+ $input.val(today.getDate().toString() + (today.getMonth() + 1).toString() + today.getFullYear().toString()),
|
|
|
+ $input.triggerHandler("setvalue.inputmask");
|
|
|
}
|
|
|
},
|
|
|
getFrontValue: function(mask, buffer, opts) {
|
|
|
@@ -1541,7 +1527,8 @@
|
|
|
var $input = $(this);
|
|
|
if (e.ctrlKey && e.keyCode == $.inputmask.keyCode.RIGHT) {
|
|
|
var today = new Date();
|
|
|
- $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString());
|
|
|
+ $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()),
|
|
|
+ $input.triggerHandler("setvalue.inputmask");
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
@@ -1554,7 +1541,8 @@
|
|
|
var $input = $(this);
|
|
|
if (e.ctrlKey && e.keyCode == $.inputmask.keyCode.RIGHT) {
|
|
|
var today = new Date();
|
|
|
- $input.val(today.getFullYear().toString() + (today.getMonth() + 1).toString() + today.getDate().toString());
|
|
|
+ $input.val(today.getFullYear().toString() + (today.getMonth() + 1).toString() + today.getDate().toString()),
|
|
|
+ $input.triggerHandler("setvalue.inputmask");
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
@@ -1863,6 +1851,7 @@
|
|
|
rightAlign: !0,
|
|
|
decimalProtect: !0,
|
|
|
postFormat: function(buffer, pos, reformatOnly, opts) {
|
|
|
+ pos = pos >= buffer.length ? buffer.length - 1 : pos;
|
|
|
var needsRefresh = !1, charAtPos = buffer[pos];
|
|
|
if ("" == opts.groupSeparator || -1 != $.inArray(opts.radixPoint, buffer) && pos >= $.inArray(opts.radixPoint, buffer) || new RegExp("[-+]").test(charAtPos)) return {
|
|
|
pos: pos
|
|
|
@@ -1887,30 +1876,24 @@
|
|
|
refreshFromBuffer: needsRefresh
|
|
|
};
|
|
|
},
|
|
|
- onKeyDown: function(e, buffer, caretPos, opts) {
|
|
|
- if (opts.autoGroup && (e.keyCode == $.inputmask.keyCode.DELETE || e.keyCode == $.inputmask.keyCode.BACKSPACE)) {
|
|
|
- var rslt = opts.postFormat(buffer, caretPos - 1, !0, opts);
|
|
|
- return rslt.caret = rslt.pos + 1, rslt;
|
|
|
+ onBeforeWrite: function(e, buffer, caretPos, opts) {
|
|
|
+ if (e && "blur" == e.type) {
|
|
|
+ var tmpBufSplit = "" != opts.radixPoint ? buffer.join("").split(opts.radixPoint) : [ buffer.join("") ], matchRslt = tmpBufSplit[0].match(opts.regex.integerPart(opts)), matchRsltDigits = 2 == tmpBufSplit.length ? tmpBufSplit[1].match(opts.regex.integerNPart(opts)) : void 0;
|
|
|
+ matchRslt && "-0" == matchRslt[matchRslt.index] && (void 0 == matchRsltDigits || matchRsltDigits[matchRsltDigits.index].match(/^0+$/)) && buffer.splice(0, 1);
|
|
|
+ var radixPosition = $.inArray(opts.radixPoint, buffer);
|
|
|
+ if (-1 != radixPosition && isFinite(opts.digits) && !opts.digitsOptional) {
|
|
|
+ for (var i = 1; i <= opts.digits; i++) (void 0 == buffer[radixPosition + i] || buffer[radixPosition + i] == opts.placeholder.charAt(0)) && (buffer[radixPosition + i] = "0");
|
|
|
+ return {
|
|
|
+ refreshFromBuffer: !0,
|
|
|
+ buffer: buffer
|
|
|
+ };
|
|
|
+ }
|
|
|
}
|
|
|
- },
|
|
|
- onKeyPress: function(e, buffer, caretPos, opts) {
|
|
|
if (opts.autoGroup) {
|
|
|
var rslt = opts.postFormat(buffer, caretPos - 1, !0, opts);
|
|
|
return rslt.caret = rslt.pos + 1, rslt;
|
|
|
}
|
|
|
},
|
|
|
- postProcessOnBlur: function(tmpBuffer, opts) {
|
|
|
- var tmpBufSplit = "" != opts.radixPoint ? tmpBuffer.join("").split(opts.radixPoint) : [ tmpBuffer.join("") ], matchRslt = tmpBufSplit[0].match(opts.regex.integerPart(opts)), matchRsltDigits = 2 == tmpBufSplit.length ? tmpBufSplit[1].match(opts.regex.integerNPart(opts)) : void 0;
|
|
|
- matchRslt && "-0" == matchRslt[matchRslt.index] && (void 0 == matchRsltDigits || matchRsltDigits[matchRsltDigits.index].match(/^0+$/)) && tmpBuffer.splice(0, 1);
|
|
|
- var radixPosition = $.inArray(opts.radixPoint, tmpBuffer);
|
|
|
- if (-1 != radixPosition && isFinite(opts.digits) && !opts.digitsOptional) {
|
|
|
- for (var i = 1; i <= opts.digits; i++) (void 0 == tmpBuffer[radixPosition + i] || tmpBuffer[radixPosition + i] == opts.placeholder.charAt(0)) && (tmpBuffer[radixPosition + i] = "0");
|
|
|
- return {
|
|
|
- refreshFromBuffer: !0,
|
|
|
- buffer: tmpBuffer
|
|
|
- };
|
|
|
- }
|
|
|
- },
|
|
|
regex: {
|
|
|
integerPart: function() {
|
|
|
return new RegExp("[-+]?\\d+");
|