Poiché questo era il risultato superiore per una query ricerca su forzando decimali in un NumberField, ho pensato di aggiornare questo per coloro che utilizzano ExtJS 4+
Il filtraggio dell'ingresso dal ExtJS 4 è stato delegato ad una funzione valueToRaw, la funzione setValue utilizzata è in realtà da Ext.form.field.Text, quindi è quello che sto sovrascrivendo qui sotto.
ho anche deciso di avere la forzatura di visualizzare decimali essere un'opzione ('forcePrecision') configurabile per NumberField, il che significa che la sostituzione sarà simile a questa:
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;
}
});
Per utilizzare questo modulo, avresti un'istanza in questo modo:
{
xtype: 'numberfield',
name: 'decimalsfield',
forcePrecision: true, #defaults to false
decimalPrecision: 3 #defaults to 2
}
campi non istanziati con forcePrecision: vero si comportano esattamente come il default.
fonte
2012-12-06 02:58:37
Ho cercato il tuo override, e funziona benissimo su un evento di modifica. Tuttavia, quando il modulo carica prima i dati da un JsonStore, fixPrecision non viene chiamato. C'è un modo per attivarlo? –
Assicurarsi che un JsonReader, non un JsonStore ... –
contrassegni come "risposta"? :) – Joshua