Javascript safari浏览器toLocaleString()的替代方案

Javascript safari浏览器toLocaleString()的替代方案,javascript,jquery,Javascript,Jquery,我正在使用此代码将数字转换为字符串: ProductsData[0]['price'].toLocaleString(); 我正在获取expexted输出: 8,499 但同样的代码不适用于Safari 请给我同样的建议………虽然toLocaleString(不带参数)在所有主流浏览器中都能工作,但不幸的是,不同浏览器之间的行为不一致 如果一致的日期/时间格式很重要,恐怕您需要建立自己的版本来定位或使用库。以下是一对值得调查的夫妇: 我今天在一个(几乎完整的)网站上工作时遇到了这个问题

我正在使用此代码将数字转换为字符串:

ProductsData[0]['price'].toLocaleString();
我正在获取expexted输出:

8,499
但同样的代码不适用于Safari


请给我同样的建议………

虽然
toLocaleString
(不带参数)在所有主流浏览器中都能工作,但不幸的是,不同浏览器之间的行为不一致

如果一致的日期/时间格式很重要,恐怕您需要建立自己的
版本来定位
或使用库。以下是一对值得调查的夫妇:


我今天在一个(几乎完整的)网站上工作时遇到了这个问题,该网站经常使用此功能,并偶然发现了您的问题(Safari没有显示任何货币和/或千/十进制分隔符)。我编写了一个小的覆盖函数来弹出并根据我的需要修复toLocaleString(在欧洲和欧元区(€))

希望这能帮助其他遇到同样问题的人

(函数(){
Number.prototype.\u tolocalString=Number.prototype.tolocalString;
Number.prototype.toLocalString=函数(区域设置、选项){
if(options.style==“currency”){//仅格式化货币。
var prepend=“”;
如果(选项货币=“欧元”){
prepend=“\u20AC”//unicode表示欧元。
}
var val=这个;
val=val;
//检查toLocaleString是否真的没有任何作用(如Safari)
var tempValue=val._toLocaleString(地区、选项);
如果(tempValue==val.toString()){/“断开”
返回prepend+val.formatMoney(2);//3?j%3:0;
返回s+(j?i.substr(0,j)+t:)+i.substr(j).替换(/(\d{3})(?=\d)/g,“$1”+t)+(c?d+Math.abs(n-i).toFixed(c).slice(2):”);
};
//演示代码
风险价值金额=1250.75;
var formattedAmount=amount.tolocalString('nl-nl',{style:'currency',currency:'EUR'});
console.log(格式化金额);

})();
“不工作”?您有任何错误吗?没有错误,我得到的输出像8499,它必须像8499,这只是一个整数值,得到表单db,格式化后,我显示…..日期库与此无关。