我有一个需要输入数字的网页,这部分很简单,只需结合使用 parseFloat、isNaN 和(用于向用户显示值)toFixed。问题是 Javascript 似乎完全不了解这里的文化。一些文化使用小数点逗号而不是小数点,但 Javascript 对此非常重视。
支持小数逗号并不太麻烦,我可以在解析用户输入之前将逗号替换为小数点,我可以在向用户显示结果之前执行相反的操作。我的问题是,有没有办法让 Javascript 知道用户的文化设置?我只关心小数点分隔符,所以现在我对千位分隔符或货币等其他复杂功能不感兴趣。
是否有可靠的(客户端)方法来检测访问者是否使用小数逗号而不是小数点?
更新
以防万一其他人想要它(或者如果任何人可以看到一个缺陷 - 除了不能在 Chrome 中工作,如前所述 - 或者更好的方法),我最终这样做了:
var useComma = (0.1).toLocaleString().indexOf(",") > 0;
现在如果用户将逗号设置为他们的小数点分隔符,useComma 将为真
最佳答案
我认为尝试检测用户的语言环境实际上可能没有多大帮助。如果您的 Web 应用程序是英文语言,用户实际上可能会使用英文格式(例如 1.3),即使在他们自己的文化中它的格式会有所不同(1,3 表示 fr-FR 或 es-ES)!谁会责怪他们?
您可以尝试变聪明并使用 Alex K 提出的解决方案,和/或考虑 accept-language
header 、与您的本地化匹配的语言环境(如果有)甚至 GeoIP最好的猜测。但是为了减少混淆,您可能希望在您希望用户输入数字或日期或其他区域设置敏感数据时给用户提示......在字段旁边显示默认值或示例,使用与您相同的区域设置格式化将用于解析用户输入。
如果您认为灵 active 能给您带来更好的用户体验,您可以使用回退技术并尝试您最期望的格式。
关于javascript - 检测数字格式文化设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9739508/