Проблема с использованием расчета jQuery с числами в европейском формате - PullRequest
0 голосов
/ 20 июня 2010

Я вычисляю строки с итогом с помощью плагина jQuery.Calculation , но итог игнорирует все после десятичного знака. Я подозреваю, что исправление лежит в регулярном выражении, но я не могу понять, где.

Следующий метод должен установить правильное значение по умолчанию для европейских десятичных дробей, он работает в строке, но метод суммы для расчета игнорирует десятичные числа. Приведенное ниже регулярное выражение является исправлением для официального релиза, но оно все еще не работает правильно.

$.Calculation.setDefaults({
    reNumbers: /(-|-\$)?(\d+(.\d{3})*(\,\d{1,})?|\.\d{1,})/g
, cleanseNumber: function (v) {
    return v.replace(/[^0-9,\-]/g, "").replace(/,/g, ".");
}
});

Пример: 7834,45 * 1 дает правильную сумму 7834,45 для этой строки, но при вычислении суммы с использованием метода суммы jQuery.Calculation получается 7834 без десятичных дробей

Вот код, вычисляющий итоги, более или менее вырванный прямо из примеров

$("[id^=total_umva_item_]").calc(
    // the equation to use for the calculation
            "qty * price",
    // define the variables used in the equation, these can be a jQuery object
            {
            qty: $("input[name^=antall_]"),
            price: $("input[name^=price_]")
        },
    // define the formatting callback, the results of the calculation are passed to this function
            function (s) {
                // return the number as a dollar amount
                return "kr " + s.toFixed(2);
            },
    // define the finish callback, this runs after the calculation has been complete
            function ($this) {
                // sum the total of the $("[id^=total_item]") selector
                var sum = $this.sum(); <- The sum is calculated without decimals
                $("#invoice-totals-net").text(
                    "kr " + sum.toFixed(2)
                );
            }
        );

Использование регулярного выражения по умолчанию для стиля чисел в США это работает правильно, но мне нужно, чтобы вычисления работали с , в качестве десятичного символа

1 Ответ

0 голосов
/ 22 июня 2010

Я получил это работает. Я связался с автором, и он передал мне значения по умолчанию ниже. Вам также нужно знать, что общий итог рассчитывается путем суммирования итогов по строкам, поэтому будьте осторожны и распечатывайте правильный десятичный символ в итоговых значениях по строкам.

$.Calculation.setDefaults({
  // a regular expression for detecting European-style formatted numbers

  reNumbers: /(-|-\$)?(\d+(\.\d{3})*(\,\d{1,})?|\,\d{1,})?/g
  // define a procedure to convert the string number into an actual usable number
  , cleanseNumber: function (v){
     // cleanse the number one more time to remove extra data (like commas and dollar signs)
     // use this for European numbers: v.replace(/[^0-9,\-]/g, "").replace(/,/g, ".")

     return v.replace(/[^0-9,\-]/g, "").replace(/,/g, ".");
  }
})
...