Vì đây là kết quả hàng đầu cho một truy vấn tìm kiếm về buộc thập phân trong một NumberField, nghĩ tôi sẽ cập nhật này cho những người sử dụng ExtJS 4+
Các đầu vào lọc từ ExtJS 4 đã được giao cho một chức năng valueToRaw, Hàm setValue được sử dụng thực sự là từ Ext.form.field.Text, vì vậy đó là những gì tôi ghi đè bên dưới.
tôi cũng quyết định có buộc hiển thị số thập phân là một tùy chọn ('forcePrecision') có thể cấu hình mỗi NumberField, có nghĩa là ghi đè sẽ trông như thế này:
Ext.override(Ext.form.NumberField, {
forcePrecision : false,
valueToRaw: function(value) {
var me = this,
decimalSeparator = me.decimalSeparator;
value = me.parseValue(value);
value = me.fixPrecision(value);
value = Ext.isNumber(value) ? value : parseFloat(String(value).replace(decimalSeparator, '.'));
if (isNaN(value))
{
value = '';
} else {
value = me.forcePrecision ? value.toFixed(me.decimalPrecision) : parseFloat(value);
value = String(value).replace(".", decimalSeparator);
}
return value;
}
});
Để sử dụng dưới hình thức của bạn, bạn muốn nhanh chóng nó như thế này:
{
xtype: 'numberfield',
name: 'decimalsfield',
forcePrecision: true, #defaults to false
decimalPrecision: 3 #defaults to 2
}
Fields không instantiated với forcePrecision: true y hệt như mặc định.
Nguồn
2012-12-06 02:58:37
Tôi đã thử ghi đè của bạn, và nó hoạt động tốt trên một sự kiện thay đổi. Tuy nhiên, khi biểu mẫu tải dữ liệu đầu tiên từ một JsonStore, fixPrecision không được gọi. Có cách nào để kích hoạt nó không? –
Làm cho rằng một JsonReader, không phải là một JsonStore ... –
đánh dấu là "trả lời"? :) – Joshua