Ext.override.ThousandSeparatorNumberField
by Jussia
HTML
<link rel="stylesheet" href="http://cdn.sencha.io/ext-4.2.0-gpl/resources/css/ext-all.css">
JavaScript
// РАБОЧИЙ ВАРИАНТ!!!!!
Ext.define("Ext.override.ThousandSeparatorNumberField", {
override: "Ext.form.field.Number",
/**
* @cfg {Boolean} useThousandSeparator
*/
decimalSeparator: '.',
thousandSeparator: ',',
useThousandSeparator: true,
/**
* @inheritdoc
*/
toRawNumber: function (value) {
return String(value).replace(this.thousandSeparator, '.')
},
/**
* @inheritdoc
*/
getErrors: function (value) {
if (!this.useThousandSeparator)
return this.callParent(arguments);
var me = this,
errors = Ext.form.field.Text.prototype.getErrors.apply(me, arguments),
format = Ext.String.format,
num;
value = Ext.isDefined(value) ? value : this.processRawValue(this.getRawValue());
if (value.length < 1) { // if it's blank and textfield didn't flag it then it's valid
return errors;
}
value = me.toRawNumber(value);
if (isNaN(value.replace(Ext.util.Format.thousandSeparator, ''))) {
errors.push(format(me.nanText, value));
}
num = me.parseValue(value);
if (me.minValue === 0 && num < 0) {
errors.push(this.negativeText);
}
else if (num < me.minValue) {
errors.push(format(me.minText, me.minValue));
}
if (num > me.maxValue) {
errors.push(format(me.maxText, me.maxValue));
}
return errors;
},
/**
* @inheritdoc
*/
valueToRaw: function (value) {
if (!this.useThousandSeparator)
return this.callParent(arguments);
var me = this;
value = me.parseValue(value);
value = me.fixPrecision(value);
value = Ext.isNumber(value) ? value : parseFloat(me.toRawNumber(value));
value = isNaN(value) ? '' : String(value).replace(',', me.decimalSeparator);
return value;
},
/**
*...