Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Форматирования чисел (запятые вместо точек) (https://javascript.ru/forum/dom-window/62230-formatirovaniya-chisel-zapyatye-vmesto-tochek.html)

Maxican 31.03.2016 17:07

Форматирования чисел (запятые вместо точек)
 
Доброго времени суток.
Во время запила калькулятора для сайта-магазина, в котором производится подсчет выбранных клиентом комплектующих и вывод окончательной суммы, у работодателя возникло страшное желание заменить точки (десятичные разделители) в числах, на запятые.

Например:
- у нас есть деталь стоимостью 400.53;
- клиент указывает, что он хочет приобрести 3 детали;
- калькулятор ему выдает результат: 1201.59.

Так вот, нужно, что бы результат был таким: 1 201,59

Стоимость задается через PHP ( $price="400.53"; ), оттуда же его берет калькулятор, что бы умножить на количество деталей.

Работодатель также хочет иметь возможность самостоятельно менять стоимость товара используя в числах именно запятую вместо точки. Другими словами JS-скрипт должен вытягивать из PHP число с запятой, после чего производить его подсчет на основании выбранных клиентом данных.

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

Буду благодарен любой подсказке.
:thanks:

*актуальных решений этой проблемы в Google не смог найти

Dilettante_Pro 31.03.2016 17:20

Maxican,
JS для своих надобностей при получении чисел из PHP или элементов HTML должен сразу же преобразовывать их в формат без пробелов с точкой, а при выводе на экран или отдаче в PHP - преобразовывать в формат с запятой и с пробелами - где надо.

Deff 01.04.2016 02:19

var i = 1201.59;
var re = /(?=\B(?:\d{3})+(?!\d))/g;
var j = i.toString().replace( re, ' ' ).replace('.', ',');
alert(j)

Maxican 04.04.2016 09:28

Цитата:

Сообщение от Deff (Сообщение 412639)
var i = 1201.59;
var re = /(?=\B(?:\d{3})+(?!\d))/g;
var j = i.toString().replace( re, ' ' ).replace('.', ',');
alert(j)

Спасибо. Действительно, все довольно просто.


Часовой пояс GMT +3, время: 09:46.