我们有一个很大的网络应用程序,在不同国家/地区都有门户网站。 在这些国家,货币价值的插入方式不同。
是否存在可以通过区域设置验证货币价值的解决方案?
答案 0 :(得分:1)
我建议http://openexchangerates.github.io/money.js/这会为您提供实时货币兑换率。
用于格式化目的,查看AccountingJs https://josscrowcroft.github.io/accounting.js/
答案 1 :(得分:0)
您可以在货币文本框旁边提供一个下拉菜单。因此,用户可以选择合同货币并填写该值。
并且在后端你需要获得两个值。用户输入的值和选择的当前值。
根据位置,您可以默认更改所选的货币。
答案 2 :(得分:0)
“我们有一个很大的网络应用程序,在不同国家/地区设有门户网站”
我强烈建议您使用Globalize设置本地化。正确设置后,您所要做的就是更改用户的locale
,并且所有依赖于语言环境的格式(例如货币,日期,数量,单位等)都会自行修复。
如果您只想将其用于货币,请参阅其货币模块:Globalize Currency Module
答案 3 :(得分:0)
我现在通过自己的功能实现了它:
/*
* checks if a given money value is a correct one via locale language
* */
function isMoney(moneyValue) {
var currentSelectedLanguage = $('#currentSelectedLanguage').val();
switch (currentSelectedLanguage)
{
// checks for , as separator and . as decimal separator e.g.: 1,234,567,890.98 - also allows without , as separator e.g.: 1234567890.98
case "en":
return /(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|[0-9]+)?(\.[0-9]{1,2})?$/.test(moneyValue);
break;
// checks for . as separator and , as decimal separator e.g.: 1.234.567.890,98 - also allows without . as separator e.g.: 1234567890,98
case "de":
case "el":
case "es":
case "hr":
case "ro":
case "sl":
case "sr":
return /(?=.)^\$?(([1-9][0-9]{0,2}(\.[0-9]{3})*)|[0-9]+)?(,[0-9]{1,2})?$/.test(moneyValue);
break;
// checks for space as separator and , as decimal separator e.g.: 1 234 567 890,98, also allows without space as separator e.g.: 1234567890,98
case "bg":
case "cs":
case "hu":
case "pl":
case "ru":
case "sk":
case "uk":
return /(?=.)^\$?(([1-9][0-9]{0,2}( [0-9]{3})*)|[0-9]+)?(,[0-9]{1,2})?$/.test(moneyValue);
break;
// checks for . as separator and , as decimal separator e.g.: 1.234.567.890,98 - also allows without . as separator e.g.: 1234567890,98
default:
return /(?=.)^\$?(([1-9][0-9]{0,2}(\.[0-9]{3})*)|[0-9]+)?(,[0-9]{1,2})?$/.test(moneyValue);
}
}
唯一的缺点是,如果我们的应用程序中有新的语言环境,我可以自行扩展它