Расчет, заменить точку запятой

У меня есть форма заказа, в которой я использую плагин расчета jQuery для подведения итогов.

Это суммирование работает нормально, но есть проблема с полученной «суммой». В сумме хочу заменить любую точку запятой.

Основа кода;

function ($this) {
    var sum = $this.sum();
    $("#totaal").html("€ " + sum2);
}

Использование .replace() непосредственно в сумме переменных не работает (функция, на которую ссылаются, недоступна для объекта). Я также пробовал это (но безрезультатно);

var sum2 = sum.toString().replace(',', '.');

Поскольку я новичок в jQuery, я в значительной степени застрял, может ли кто-нибудь указать мне правильное направление?


person YDL    schedule 13.03.2011    source источник


Ответы (3)


Ваша строка замены почти правильная. Вам нужно использовать регулярное выражение с опцией g, в которой говорится о замене всех экземпляров, а не только первого. У вас также поменялся порядок (во-первых, что найти, во-вторых, что заменить).

var sum2 = sum.toString().replace(/\./g, ',');

Обратите внимание, что \ перед .: . имеет особое значение в регулярном выражении, поэтому его необходимо экранировать.

person Nathan Ostgard    schedule 13.03.2011
comment
Вау, спасибо за быстрый ответ. Вышеуказанная строка работает отлично! - person YDL; 14.03.2011

Если бы сумма была числом, то это сработало бы.

var sum_formatted = String( sum ).replace(/\./g,',');

Можете ли вы запустить typeof(sum) и сказать нам, что получится на выходе.

Также, если вы можете настроить проект на jsfiddle.com, это было бы здорово.

person Jason    schedule 13.03.2011
comment
typeof(sum) возвращает число. Тем не менее, строка выше, похоже, не работает (она не заменяет точку). - person YDL; 14.03.2011
comment
Не работает, потому что порядок аргументов по-прежнему неверен. - person nzifnab; 14.03.2011
comment
На самом деле я предположил, что YDL хотела заменить запятую точками. Во всяком случае, я изменил его вокруг - person Jason; 14.03.2011

Ваша проблема в том, что ваша функция замены должна читать replace('.', ','), а не наоборот (у вас было replace(',', '.')). Обратите внимание, что первый аргумент - это то, что вы ищете, а второй аргумент - это то, что вы хотите вместо этого. Вы заменили все запятые точками. Regex здесь не нужен.

person nzifnab    schedule 14.03.2011