2017-07-13 1 views
0

Ich versuche, Dezimalzahlen in einer AngularJS App konsequent anzuzeigen.JavaScript: Get Dezimaltrennzeichen verwendet in Eingangstyp = "Nummer"

Dezimalzahlen im Text (span/div/...) sollten mit dem gleichen Trennzeichen wie Dezimalzahlen in Eingabefeldern angezeigt werden.

Es spielt keine Rolle, ob Kommas oder Punkte verwendet werden.

Wie finden Sie das Dezimaltrennzeichen, das der Browser in <input type="number"> Felder verwendet?

Ich versuchte mit toLocaleString und AngularJS number filter, aber das stimmt nicht immer mit Eingabefeldern überein, da einige Browser nicht das Gebietsschema des Benutzers für Eingabefelder berücksichtigen.

Ich möchte nicht <input type="text"> verwenden, aus Gründen der Benutzerfreundlichkeit auf mobilen Geräten.

+0

* "... da einige Browser die für Eingabefelder locale Berücksichtigung des Benutzers nicht nehmen." Wirklich? Blech. –

+0

Wenn es wirklich der Fall ist, dass Browser die falschen Tausender/Dezimal Trennzeichen in 'input type =" number "' Felder verwenden (was schwer zu glauben ist, ehrlich gesagt, aber ich habe jetzt keine Zeit zu überprüfen), würde ich sagen Das ist nicht dein Problem: Dateifehlerberichte mit den entsprechenden Browseranbietern verwenden das korrekte, länderspezifische Format (z. B. 'toLocaleString' oder Angulars' Nummer'Formatierer), und wenn sich jemand über die Eingaben beschwert, leite sie an den Fehlerberichten . –

+0

@ T.J.Crowder das Problem ist, dass die HTML5-Spezifikation nicht viel darüber sagt. Browser sind ziemlich frei, um Eingabefelder anzuzeigen, wie sie wünschen, und nicht alle verwenden Gebietsschema. Siehe zum Beispiel dieses Blog: https://ctrl.blog/entry/html5-input-number-localization – fikkatra

Antwort

-1

Haben Sie versucht, den Zahlenfilter zu verwenden? Es verwendet das aktuelle Gebietsschema, um das Zahlenformat zu bestimmen.

<span>{{val | number:2}} 

https://docs.angularjs.org/api/ng/filter/number

+1

Aber wie das OP sagte: * "... da einige Browser nicht das Gebietsschema des Benutzers für Eingabefelder berücksichtigen" * Wenn dies das Gebietsschema verwendet, wie 'toLocaleStting', hat es das gleiche Problem, nein? –