Komma in HTML input?
Hey,
ich programmiere zurzeit an einer Webseite bei der, der Besucher der Webseite einen Preis in das Input Feld eingeben muss welcher dann mit Js umgerechnet wird. Allerdings funktionieren nur Zahlen welche mit getrennt sind (12.50€). Da meine Webseite aber deutsch ist werden die meisten User vermutlich eine Zahl mit Komma eingeben (12,50€). Die wird aber leider nicht erkannt und als Ergebnis kommt NaN€.
Habe jetzt schon lange das Internet durchsucht aber nichts gefunden, weiß jemand von euch wie ich den Fehler beheben kann?
Danke im voraus :)
5 Antworten
Hey,
das Problem ist JavaScript ist in englisch und in der englischen Sprache trennt man die Beträge mit Punkt.
Du bräuchtest also 2 Werte zum rechnen. Der Erste Wert wird nur auf der Website angezeigt und der zweite ist der selbe Wert nur mit einem Punkt, welchen du dann weiter mit Code bearbeiten kannst.
Den Punkt kannst du mit der JavaScript Funktion replace() umrechnen.
Probier mal mit der JavaScript Methode replace() das Koma durch einen Punkt zu ersetzen.
Das ist kein Fehler, sondern eine Konvention das Fließkommazahlen immer mit Punkt dargestellt wird. Die Lösung mit dem replace ist recht gut, besser wären Funktionen die in Richtung "format" gehen. Wie schon erwähnt Stackoverflow haben Lösungen
https://stackoverflow.com/questions/28360966/regular-expression-to-match-german-number
Kenne mich nicht gut mit Javascript aus aber wenn du keine andere Lösung findest, könntest du eventuell die Eingabe zu einem String umwandeln und mit .Replace() das Komma zu einem Punkt ändern. Anschließend wandelst du es zurück in deinen Int, Float etc.
#
Wenn du auf Gutefrage keine gute Antwort bekommst würde ich dir Stackoverflow empfehlen. Dort bekommst du schnell sehr hilfreiche Antworten.
Und wenn du ein input type=number feld nimmst, bestehen chancen, dass der Browser die lokalisierung für dich übernimmt. Trotzdem sollte man in deutschsprachigen Webseiten immer comma2point Wandlungen für Berechnungen einbauen. (replace ist da, wie bereits erwähnt, ein guter Ansatz)