in src/Foundation/Theming/code/scripts/autoNumeric.js [772:820]
formatQuick: function () {
var settingsClone = this.settingsClone,
parts = this.getBeforeAfterStriped(),
leftLength = this.value;
if ((settingsClone.aSep === '' || (settingsClone.aSep !== '' && leftLength.indexOf(settingsClone.aSep) === -1)) && (settingsClone.aSign === '' || (settingsClone.aSign !== '' && leftLength.indexOf(settingsClone.aSign) === -1))) {
var subParts = [],
nSign = '';
subParts = leftLength.split(settingsClone.aDec);
if (subParts[0].indexOf('-') > -1) {
nSign = '-';
subParts[0] = subParts[0].replace('-', '');
parts[0] = parts[0].replace('-', '');
}
if (subParts[0].length > settingsClone.mInt && parts[0].charAt(0) === '0') { /** strip leading zero if need */
parts[0] = parts[0].slice(1);
}
parts[0] = nSign + parts[0];
}
var value = autoGroup(this.value, this.settingsClone),
position = value.length;
if (value) {
/** prepare regexp which searches for cursor position from unformatted left part */
var left_ar = parts[0].split(''),
i = 0;
for (i; i < left_ar.length; i += 1) { /** thanks Peter Kovari */
if (!left_ar[i].match('\\d')) {
left_ar[i] = '\\' + left_ar[i];
}
}
var leftReg = new RegExp('^.*?' + left_ar.join('.*?'));
/** search cursor position in formatted value */
var newLeft = value.match(leftReg);
if (newLeft) {
position = newLeft[0].length;
/** if we are just before sign which is in prefix position */
if (((position === 0 && value.charAt(0) !== settingsClone.aNeg) || (position === 1 && value.charAt(0) === settingsClone.aNeg)) && settingsClone.aSign && settingsClone.pSign === 'p') {
/** place caret after prefix sign */
position = this.settingsClone.aSign.length + (value.charAt(0) === '-' ? 1 : 0);
}
} else if (settingsClone.aSign && settingsClone.pSign === 's') {
/** if we could not find a place for cursor and have a sign as a suffix */
/** place carret before suffix currency sign */
position -= settingsClone.aSign.length;
}
}
this.that.value = value;
this.setPosition(position);
this.formatted = true;
}