添加如下内容
Ext.define('Ext.ux.NumberFieldFormat', {
extend: 'Ext.form.NumberField', //'Ext.form.NumberField'
alias: 'widget.numberFieldFormat',
hideTrigger: true,
baseChars: '0123456789,',
setValue: function (v) {
v = typeof v == 'number' ? v : String(v).replace(this.decimalSeparator, ".").replace(/,/g, "");
//v = isNaN(v) ? '' : rendererZhMoney(v);
v = Ext.util.Format.number(this.fixPrecision(String(v)), "0,000,000"); //此为ext 4.0
this.setRawValue(v);
//return Ext.form.NumberField.superclass.setValue.call(this, v);
},
getValue: function () {
return (String(Ext.form.NumberField.superclass.getValue.call(this)).replace(",", ""));
},
fixPrecision: function (value) {
var nan = isNaN(value);
if (!this.allowDecimals || this.decimalPrecision == -1 || nan || !value) {
return nan ? '' : value;
}
return parseFloat(value).toFixed(this.decimalPrecision);
},
validateValue: function (value) {
value = String(value).replace(this.decimalSeparator, ".").replace(/,/g, "");
if (!Ext.form.NumberField.superclass.validateValue.call(this, value)) {
return false;
}
if (value.length < 1) {
return true;
}
if (isNaN(value)) {
this.markInvalid(String.format(this.nanText, value));
return false;
}
var num = this.parseValue(value);
if (num < this.minValue) {
this.markInvalid(String.format(this.minText, this.minValue));
return false;
}
if (num > this.maxValue) {
this.markInvalid(String.format(this.maxText, this.maxValue));
return false;
}
return true;
},
parseValue: function (value) {
value = parseFloat(String(value).replace(this.decimalSeparator, ".").replace(/,/g, ""));
return isNaN(value) ? '' : value;
}
});
2.引用
xtype: 'numberFieldFormat',
fieldLabel: '收入',
padding: '5 10 5 0',
labelWidth: 160,
name: 'Income',
效果如下:
1.只能输入数字,汉字和字母都输不了
2.取值的时候只能用: form.getForm().findField("Income").value,不可以用getValue()方法