parseFloat(element.value.replace
Thorsten
- javascript
0 JürgenB0 Gunnar Bittersmann0 Rolf B
Hallo,
ich möchte einen Wert, der eingeben wird überprüfen, es sollen nur Zahlen übernommen werden, alles andere soll gelöscht werden. Hier hier im Forum fand ich in einem Beitrag:
let zahl = parseFloat(element.value.replace(/[^0-9 ]/g, "") )
Wenn ich es aber richtig verstehe, behandelt parseFloat die Zahl sowieso schon so, außer bei anderen Zeichen vor der Zahl
So müsste
let zahl = parseFloat(element.value)
alleine richtig rechnen
€30 geht .... nicht aber 30€, so kann man sich doch das replace sparen
Hallo,
let zahl = parseFloat(element.value)
patseFloat liefert eine Zahl, wenn sie am Anfang steht,
wenn die Einheit vor der Zahl steht, musst du die Eingabe behandeln.
Beachte: parseFloat parsed nach Fließkommazahlen mit Dezimalpunkt
Kennst du schon <input type="number">
?
Warum steht die Einheit im Element und nicht davor/dahinter?
Gruß
Jürgen
@@Thorsten
ich möchte einen Wert, der eingeben wird überprüfen, es sollen nur Zahlen übernommen werden, alles andere soll gelöscht werden.
Wenn du ein Eingabefeld für Zahlen willst, dann verwende den entsprechenden Typen: <input type="number"/>
Dann steht dir auch valueAsNumber
zur Verfügung, was eine Zahl zurückgibt.
(Um die serverseitige Prüfung der eingegebenen Daten kommst du sowieso nicht drumrum.)
let zahl = parseFloat(element.value.replace(/[^0-9 ]/g, "") )
Das macht keinen Sinn, nur Ziffern und Leerzeichen zuzulssen und dann nach Fließkommazahlen zu parsen.
Für was für Daten soll das Eingabefeld gut sein?
😷 LLAP
Hallo Thorsten,
parseInt und parseFloat stellen die Arbeit ein, sobald sie ein Zeichen finden, das sie nicht mehr verarbeiten können. Führende Leerstellen werden übersprungen. Wenn die Arbeit eingestellt wurde, bevor ein Zeichen verarbeitet werden konnte, ist das Ergebnis NaN.
Nicht jedes Zeichen ist an jeder Position erlaubt. D.h. eine einfache Regex, die Ziffern und Spaces zulässt, reicht nicht hin. parseFloat(" 12 3")
würde 12 liefern.
Rolf