Wie kann ich erzwingen die Anzeige der dezimal-in eine ExtJS NumberField, um eine gewisse Genauigkeit?
Ich habe ein Formular mit einem NumberField
bekommt Werte vom Typ float
von JSON. Wenn die Werte zufällig ganze zahlen, dann werden keine Dezimalstellen angezeigt werden. Ich möchte zeigen, auf 2 Dezimalstellen zu allen Zeiten. Gibt es eine config-option für diese?
Hier ist meine Erklärung:
items: [
{
fieldLabel: 'Net Sales',
name: 'netSales',
allowBlank:false,
decimalPrecision:2
},
InformationsquelleAutor der Frage Mike Sickler | 2009-08-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
entweder erweitern :
oder überschreibenund das wird Wirkung alle numberfields in Ihrer Anwendung:
BEARBEITEN
Beachten Sie den auskommentierten Abschnitt in der ersten setValue-Methode.
InformationsquelleAutor der Antwort Joshua
Da dies das top-Ergebnis für eine Suchanfrage zum erzwingen von Dezimalzahlen in ein NumberField, dachte, ich würde die Aktualisierung für diejenigen, die sich mit ExtJS 4+
Den input-filtern, da ExtJS 4 übertragen worden ist, um eine valueToRaw Funktion, die setValue-Funktion verwendet, ist eigentlich von Ext.form.Feld.Text, so dass ist, was ich bin übergeordnete unten.
Ich habe auch beschlossen zu haben, die durch die Anzeige von Nachkommastellen um eine option ('forcePrecision') konfigurierbar pro NumberField, was bedeutet, dass das überschreiben wird wie folgt Aussehen:
Verwenden Sie diese in Ihrer form, würde Sie instanziieren Sie es wie folgt:
Felder, die nicht instanziiert mit forcePrecision: true Verhalten sich genauso wie die Standard.
InformationsquelleAutor der Antwort Dave A
Die beliebte Lösung für mich nicht funktioniert. In der Tat ist der code für die Lösung ist eine exakte Kopie von EXT JS 3.3 source code, die, für mich, "1" anzeigt anstelle von "1.00", wenn decimalPrecision ist 2. Basierend auf der beliebten Lösung ' s Vorschlag zu überschreiben, setValue, das ist, was ich getan habe:
Obwohl die fixPrecision code scheint formatieren Sie die Zahl mit der gewünschten Präzision, javascript verlieren würde die Präzision bei der manipulation auf die beiden Zeilen vor dem Aufruf des superclass-die setValue Funktion. Die Einstellung der Präzision mit toFixed wenn es schließlich in einen String konvertiert, funktionierte es.
Glück!
InformationsquelleAutor der Antwort Jens
Beste Wette ist wahrscheinlich, um einen listener hinzufügen blur-event für Sie, und verwenden Sie dann errichtet in Javascript .toFixed(2) - Funktion auf den Wert des Feldes.
InformationsquelleAutor der Antwort Jason
Die option decimalPrecision definition ist:
"Die maximale Genauigkeit anzeigen, die nach dem Dezimaltrennzeichen (standardmäßig 2)"
Gibt es keine option um zu erzwingen das format, die Sie auf bestem Wege begraben zu überschreiben NumberField Klasse.
InformationsquelleAutor der Antwort Davide Ungari
wenn Sie wollen, so etwas wie unten:
geben Sie 50 > u bekam 50
50.10 > 50.10
50.123 > 50.12
Versuchen Sie dies:
InformationsquelleAutor der Antwort Umang
Dieser code funktioniert Super für mich. Es wird nicht funktionieren mit der "ValueToRow" override in ExtJS 4.2.0.
Referenz:
Zu halten, wie die nachfolgende Nullen in Ext.form.Feld.Anzahl ?
InformationsquelleAutor der Antwort Nuwa