Hallo Franz,
das weißt Du nicht. Zumindest nicht generisch, auf beliebigen Seiten.
Es gibt Hinweise.
(1) window.navigator.language - liefert Dir die Spracheinstellung im Browser. Aber ist das auch die Sprache, in der die Seite ausgeliefert wird?
(2) Es gibt das lang Attribut, das eigentlich auf's html Element gehört und die Sprache kennzeichnet, in der die Seite ausgeliefert wurde. Aber trotz Gunnars Predigten macht das lange[1] nicht jeder. Und du bist auch nicht sicher, dass es lang nur auf dem html Element gibt.
Eingabe von Zahlen mit Tausendertrenner UND Dezimalzeichen ist tatsächlich ein Drama.
Auf deiner eigenen Seite hast Du bessere Chancen, weil Du da weißt, wie die Sprachauswahl funktioniert. Oder weil Du weißt, dass Du eh nur deutsche Anwender hast, je nach dem. Wenn Du Deine User kennst, oder die dich, dann kann man Vereinbarungen zur Zahleneingabe treffen.
Deine direkte Interaktivität hilft den Usern auch dabei, Fehlinterpretationen von Punkt und Komma zu vermeiden.
Und auch das rettet Dich nicht, wenn Du jemanden am Gerät sitzen hast, der durch Excel final verpunktet ist und sich weigert, ein Dezimalkomma zu verwenden. Es ist am Besten, Tausendertrennzeichen nicht zu beachten und Punkt UND Komma als Dezimaltrennzeichen zu verwenden. Dann reicht allerdings deine getInputAsFloat nicht mehr hin, dann musst Du Kommas durch Punkte ersetzen und den ganzen Rest entfernen. Das sind zwei Replaces. Nebeneffekt: parseFloat("123.456.789") ergibt 123.456. Das könnte man als GIGO[2] definieren, oder man könnte es in drei Schritten machen:
- ist value.replace(/[^.,]/g,"").length > 1 (mehr als 1 Trennzeichen) -> Fehler
- Ersetze Kommas durch Punkte
- Ersetze alles außer 0123456789. durch "".
Alternativ zu 3. kannst Du auch mit value.match(/^0-9.]/) prüfen, ob irgendein unerwartetes Zeichen in der Eingabe ist und eine Fehlermeldung anzeigen.
Mit der E Notation (1.2E7 für 12 Millionen) würde ich die Eingabe nicht belasten. Das kommt im kaufmännischen Bereich nicht vor.
Rolf
sumpsi - posui - obstruxi