Gibt es eine Möglichkeit, einen input[type='number']
Wert so zu formatieren , dass immer 2 Dezimalstellen angezeigt werden?
Beispiel: Ich möchte 0.00
statt sehen 0
.
Befolgen Sie die Vorschläge und fügen Sie ein Stück jQuery hinzu, um das Format für Ganzzahlen zu erzwingen:
parseFloat($(this).val()).toFixed(2)
robot_speed = parseFloat(robot_speed).toFixed(2)
change
Methode einfügen , um ihn jedes Mal auszulösen, wenn sich das Feld ändert: stackoverflow.com/a/58502237/2056125Sie können nicht wirklich, aber Sie ein halber Schritt könnte sein:
quelle
Die Verwendung des
step
Attributs aktiviert es . Es bestimmt nicht nur, wie viel es fahren soll, sondern auch die zulässigen Zahlen. Die Verwendungstep="0.01"
sollte den Trick tun, dies kann jedoch davon abhängen, wie der Browser den Standard einhält.quelle
input[type="text"]
mit all den nativeninput[type="number"]
Schnickschnack , die mit einer gründlichen Neuimplementierung einhergehen, oder tauschen dieses Feld gegen ein anderes aus, um den Wert je nach Elementstatus anzuzeigen.Die verwendeten Lösungen
input="number"
step="0.01"
funktionieren in Chrome hervorragend, funktionieren jedoch in einigen Browsern nicht, insbesondere in meinem Fall Frontmotion Firefox 35 .. was ich unterstützen muss.Meine Lösung bestand darin, mit dem jQuery Mask-Plugin von Igor Escobar wie folgt zu jQuery:
Dies funktioniert gut, natürlich sollte man den übermittelten Wert danach überprüfen :) HINWEIS, wenn ich dies aus Gründen der Browserkompatibilität nicht tun müsste, würde ich die obige Antwort von @Rich Bradshaw verwenden.
quelle
type
Attribut der Eingabenumber
oder isttext
. Wenn es zurückgegeben wirdtext
, obwohl der HTML-Code so geschrieben ist, unterstütztnumber
der Browser diesen Typ nicht, und das Verknüpfen dieses Verhaltens mit ihm ist eine geeignete Aktion.Basierend auf dieser Antwort von @Guilherme Ferreira können Sie die
parseFloat
Methode jedes Mal auslösen , wenn sich das Feld ändert. Daher zeigt der Wert immer zwei Dezimalstellen an, auch wenn ein Benutzer den Wert durch manuelle Eingabe einer Zahl ändert.quelle
Auf diese Weise werden maximal 2 Dezimalstellen erzwungen, ohne automatisch auf 2 Stellen gerundet zu werden, wenn der Benutzer die Eingabe noch nicht abgeschlossen hat.
quelle
Wenn Sie hier gelandet sind, fragen Sie sich nur, wie Sie auf 2 Dezimalstellen beschränken können ich eine native Javascript-Lösung:
Javascript:
HTML:
Beachten Sie, dass dies nicht AFAIK kann, verteidigen Sie sich gegen diesen Chrome-Fehler mit der Zahleneingabe.
quelle
Dies ist ein schneller Formatierer in JQuery, der die
.toFixed(2)
Funktion für zwei Dezimalstellen verwendet.Nachteile: Sie müssen dies jedes Mal aufrufen, wenn die Eingabenummer geändert wird, um sie neu zu formatieren.
Hinweis: Aus irgendeinem Grund gibt die jQuery
val()
eine Zeichenfolge zurück, selbst wenn eine Eingabe vom Typ 'number' ist . Daher dieparseFloat()
.quelle
Ich weiß, dass dies eine alte Frage ist, aber es scheint mir, dass keine dieser Antworten die gestellte Frage zu beantworten scheint, so dass dies hoffentlich jemandem in Zukunft helfen wird.
Ja, Sie können immer 2 Dezimalstellen anzeigen, aber leider kann dies nicht nur mit den Elementattributen durchgeführt werden. Sie müssen JavaScript verwenden.
Ich sollte darauf hinweisen, dass dies für große Zahlen nicht ideal ist, da es immer die nachfolgenden Nullen erzwingt, sodass der Benutzer den Cursor zurück bewegen muss, anstatt Zeichen zu löschen, um einen Wert größer als 9,99 festzulegen
quelle
Mein bevorzugter Ansatz, bei dem
data
Attribute verwendet werden, um den Status der Nummer zu speichern:quelle
quelle
ui-number-mask
für eckige https://github.com/assisrafael/angular-input-masksnur das:
Wenn Sie einen Wert nach dem anderen setzen ...
Ziffer pro Ziffer
quelle
Schauen Sie sich auf diese :
quelle
Dies ist die richtige Antwort:
quelle