parseFloat дает NaN для шведской культуры

Я использую плагин 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>

2 ответа

Я думаю, что вы используете неправильную культуру. Или ваш введенный номер просто в неправильном формате. 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"
    }
},

Швеция фактически использует пространство как разделитель тысяч. Я не могу найти действительно хорошую ссылку для этого все же. (Я шведка и 1 000 000 123 выглядит лучше, чем 1 000 000 123)

следующий шов.NET C# Code подтверждает это.

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

Также, если вы выберете "Регион и язык", а затем "Дополнительные настройки" в окнах и выберете "Шведский (Швеция)", в качестве пробела будет показан символ группировки цифр.

И оракулу швы договориться: http://docs.oracle.com/cd/E19455-01/806-0169/overview-9/index.html

Другие вопросы по тегам