Я вычисляю строки с итогом jQuery.Calculation plugin, но общее количество игнорируется после десятичного символа. Я подозреваю, что исправление лежит в регулярном выражении, но я не могу понять, где.Проблема с использованием вычисления jQuery с номерами в европейском формате
Следующий метод должен установить правильное значение по умолчанию для европейских десятичных знаков, оно работает pr row, но метод sum для вычисления игнорирует десятичные числа. Регулярное выражение ниже - это исправление для официального выпуска, но оно все еще не работает правильно.
$.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)
);
}
);
Использование регулярных выражений по умолчанию для стиля номера США эта работа правильно, но мне нужны расчеты для работы с ,
в качестве десятичного символическую архитектуру монументальной библиотеки l
Можете ли вы показать некоторые примеры значений, которые терпят неудачу? –
@Pekka В некоторых местах используются запятые, где американцы (в частности, я уверен) используют периоды, и наоборот. Таким образом, для американца 123 456 означает «сто двадцать три тысячи четыреста пятьдесят шесть», а для европейца это означает «сто двадцать три и четыреста пятьдесят шесть тысячных». (Наверное, вы это знаете, но теперь здесь для всех молодых людей, присоединяющихся к нам :-) – Pointy
@ Великолепно, да, я знаю об этом, но хорошо указать. Я запрашивал некоторые фактические данные, так как в Европе существуют даже региональные различия: «123.456» в Германии, например, 123'456' в Швейцарии ... Это долгая история, и обычный ответ заключается в том, чтобы перевести на английский язык как можно скорее насколько возможно :) –