Jak to był szczyt wynik na zapytaniu o zmuszanie dziesiętne w NumberField, myślałem, że będzie aktualizować to dla tych korzystających ExtJS 4+
Wejście filtrowanie od ExtJS 4 zostało przekazanych do funkcji valueToRaw, użyta funkcja setValue pochodzi z pola Ext.form.field.Text, więc to właśnie nadpisuję poniżej.
ja również postanowił mieć zmuszając wyświetlanie dziesiętne być opcja („forcePrecision”) konfigurowalny za NumberField, co oznacza, że korekcja będzie wyglądać następująco:
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;
}
});
Aby to wykorzystać w swojej formie, chcesz instancję to tak:
{
xtype: 'numberfield',
name: 'decimalsfield',
forcePrecision: true, #defaults to false
decimalPrecision: 3 #defaults to 2
}
pola nie wystąpienia z forcePrecision: true zachowują się dokładnie tak samo jak domyślne.
Próbowałem swoje obejście i działa świetnie na imprezie zmian. Jednak, gdy formularz najpierw ładuje dane z JsonStore, nie jest wywoływana metoda fixPrecision. Czy istnieje sposób, aby go uruchomić? –
Czy znak JsonReader, a nie JsonStore ... –
jest "odebrany"? :) – Joshua