【问题标题】:parseFloat gives NaN for swedish cultureparseFloat 为瑞典文化提供 NaN
【发布时间】:2013-04-19 09:33:29
【问题描述】:

我正在使用jQuery Globalize 插件以及 jQuery 验证。

对于有效的瑞典数字5.000,00 parseFloat 函数给出NaN

以下代码/库中的错误可能是什么?

<script type="text/javascript" src="/Scripts/jquery-1.9.0.min.js"></script>
<script type="text/javascript" src="/Scripts/globalize.js"></script>
<script type="text/javascript" src="/Scripts/cultures/globalize.culture.sv.js"></script>
<script type="text/javascript" src="/Scripts/jquery.validate.js"></script>
<script type="text/javascript" src="/Scripts/jquery.validate.unobtrusive.js" ></script>

<script type="text/javascript">

 jQuery(function () {

        Globalize.culture('sv');

        $.validator.methods.number = function (value, element) {

            if (Globalize.parseFloat(value)) { // this gives NaN

                return true;
            }
            return false;
        }
    });
   </script>

【问题讨论】:

  • 你有瑞典“文化”的JS文件吗?
  • @Blender,是的,我有。用脚本参考更新了我的问题。我可以看到加载的瑞典文化文件200 Ok

标签: javascript jquery jquery-validate jquery-globalization


【解决方案1】:

我认为您使用了错误的文化。或者您输入的号码格式错误。 http://jsfiddle.net/98sgm/1/

jQuery(function () {
    Globalize.culture('sv');
    alert(Globalize.parseFloat('5.000,00'));
    alert(Globalize.parseFloat('5,000.00'));
 });

以及来自文化文件的源代码:

numberFormat: {
    ",": " ",
    ".": ",",
    negativeInfinity: "-INF",
    positiveInfinity: "INF",
    percent: {
        ",": " ",
        ".": ","
    },
    currency: {
        pattern: ["-n $","n $"],
        ",": ".",
        ".": ",",
        symbol: "kr"
    }
},

编辑: 创建新的文化文件并将 numberFormat 选项设置为以下:

numberFormat: {
    ",": ".",
    ".": ",",
    negativeInfinity: "-INF",
    positiveInfinity: "INF",
    percent: {
        ",": " ",
        ".": ","
    },
    currency: {
        pattern: ["-n $","n $"],
        ",": ".",
        ".": ",",
        symbol: "kr"
    }
},

【讨论】:

  • @Billa 似乎瑞典文化格式化程序设置在不同的配置中。更新了解决方案的答案。
【解决方案2】:

瑞典实际上使用空格作为千​​位分隔符。 不过,我找不到一个很好的参考。 (我是瑞典人,1 000 000,123 在我看来比 1.000.000,123 更好)

以下 .NET C# 代码接缝进行确认。

Console.WriteLine(String.Format("'{0}'", System.Globalization.CultureInfo.GetCultureInfo("sv-SE").NumberFormat.NumberGroupSeparator));

此外,如果您在 Windows 中转到“区域和语言”,然后转到“其他设置”并选择瑞典语(瑞典),它会将数字分组符号显示为空格。

和甲骨文接缝一致: http://docs.oracle.com/cd/E19455-01/806-0169/overview-9/index.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 2020-06-14
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    相关资源
    最近更新 更多