in src/Foundation/Theming/code/scripts/autoNumeric.js [711:768]
processKeypress: function () {
var settingsClone = this.settingsClone,
cCode = String.fromCharCode(this.which),
parts = this.getBeforeAfterStriped(),
left = parts[0],
right = parts[1]; /** start rules when the decimal character key is pressed */
/** always use numeric pad dot to insert decimal separator */
if (cCode === settingsClone.aDec || (settingsClone.altDec && cCode === settingsClone.altDec) || ((cCode === '.' || cCode === ',') && this.kdCode === 110)) { /** do not allow decimal character if no decimal part allowed */
if (!settingsClone.mDec || !settingsClone.aDec) {
return true;
} /** do not allow decimal character before aNeg character */
if (settingsClone.aNeg && right.indexOf(settingsClone.aNeg) > -1) {
return true;
} /** do not allow decimal character if other decimal character present */
if (left.indexOf(settingsClone.aDec) > -1) {
return true;
}
if (right.indexOf(settingsClone.aDec) > 0) {
return true;
}
if (right.indexOf(settingsClone.aDec) === 0) {
right = right.substr(1);
}
this.setValueParts(left + settingsClone.aDec, right);
return true;
}
/**
* start rule on negative sign & prevent minus if not allowed
*/
if (cCode === '-' || cCode === '+') {
if (!settingsClone.aNeg) {
return true;
} /** caret is always after minus */
if (left === '' && right.indexOf(settingsClone.aNeg) > -1) {
left = settingsClone.aNeg;
right = right.substring(1, right.length);
} /** change sign of number, remove part if should */
if (left.charAt(0) === settingsClone.aNeg) {
left = left.substring(1, left.length);
} else {
left = (cCode === '-') ? settingsClone.aNeg + left : left;
}
this.setValueParts(left, right);
return true;
} /** digits */
if (cCode >= '0' && cCode <= '9') { /** if try to insert digit before minus */
if (settingsClone.aNeg && left === '' && right.indexOf(settingsClone.aNeg) > -1) {
left = settingsClone.aNeg;
right = right.substring(1, right.length);
}
if (settingsClone.vMax <= 0 && settingsClone.vMin < settingsClone.vMax && this.value.indexOf(settingsClone.aNeg) === -1 && cCode !== '0') {
left = settingsClone.aNeg + left;
}
this.setValueParts(left + cCode, right);
return true;
} /** prevent any other character */
return true;
},