Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.02.2018, 17:07
Интересующийся
Отправить личное сообщение для monah1983 Посмотреть профиль Найти все сообщения от monah1983
 
Регистрация: 05.02.2015
Сообщений: 20

Красивое отображение цены
Всем добрый день!
Передали на администрирование сайт, попросили чтобы красиво цены отображались, опыта js нету, поэтому тут и пишу
вот код отвечающий за вывод цены
e.displayPrice = function(e) {
        var t = Math.round(e);
        return t <= 999 ? t : t >= 1e3 && t <= 9999 ? t.toString().slice(0, 1) + " " + t.toString().slice(1) : t.toString().slice(0, 2) + " " + t.toString().slice(2)
    },

все красиво отображает, только если цена до 99 999, т.е. 5 654, 16 156 красиво отделяет сотые, но если цена больше 100 000, тогда отображается 12 4564, а надо 124 564, подскажите как сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 04.02.2018, 17:41
Новичок на форуме
Отправить личное сообщение для KonstBessonov Посмотреть профиль Найти все сообщения от KonstBessonov
 
Регистрация: 18.01.2018
Сообщений: 7

А почему стандартная функция не подходит? https://developer.mozilla.org/en-US/...toLocaleString

Math.round(e).toLocaleString()
// А можно даже
Math.round(e).toLocaleString("ru-RU", {style: "currency", currency: "RUB"})
// Или
Math.round(e).toLocaleString("ru-RU", {style: "currency", currency: "EUR"})
Ответить с цитированием
  #3 (permalink)  
Старый 04.02.2018, 17:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

KonstBessonov, не все и все пока поддерживают.


monah1983,

(price+'').replace(/\B(?=(?:\d{3})+(?!\d))/g, ' ')
Ответить с цитированием
  #4 (permalink)  
Старый 04.02.2018, 17:53
Интересующийся
Отправить личное сообщение для monah1983 Посмотреть профиль Найти все сообщения от monah1983
 
Регистрация: 05.02.2015
Сообщений: 20

а в return тогда все убрать?
должно получится
e.displayPrice = function(e) {
        var t = Math.round(e).toLocaleString("ru-RU", {style: "currency", currency: "RUB"});
        return[B] t <= 999 ? t : t >= 1e3 && t <= 9999 ? t.toString().slice(0, 1) + " " + t.toString().slice(1) : t.toString().slice(0, 2) + " " + t.toString().slice(2)[/B] что с этим делать?
    },
Ответить с цитированием
  #5 (permalink)  
Старый 04.02.2018, 17:58
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Написано же просто рег. выражение, чем не подходит?
Ответить с цитированием
  #6 (permalink)  
Старый 04.02.2018, 18:08
Интересующийся
Отправить личное сообщение для monah1983 Посмотреть профиль Найти все сообщения от monah1983
 
Регистрация: 05.02.2015
Сообщений: 20

Сообщение от laimas Посмотреть сообщение
KonstBessonov, не все и все пока поддерживают.


monah1983,

(price+'').replace(/\B(?=(?:\d{3})+(?!\d))/g, ' ')
СПАСИБО ВСЕ РАБОТАЕТ))) можно закрывать
Ответить с цитированием
  #7 (permalink)  
Старый 04.02.2018, 19:21
Новичок на форуме
Отправить личное сообщение для KonstBessonov Посмотреть профиль Найти все сообщения от KonstBessonov
 
Регистрация: 18.01.2018
Сообщений: 7

Сообщение от laimas Посмотреть сообщение
не все и все пока поддерживают.
Базовую toLocaleString() поддерживают вроде как все. Это стандарт ES3. А расширение с локалью и дополнительными опциями да - не все.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условие цены DarknesS jQuery 12 13.03.2017 00:01
Преобразование из текстовых данных в красивое отображение материала AlexGraur Общие вопросы Javascript 0 08.08.2015 15:13
Обновление цены в прайсе по курсу валют Olger Общие вопросы Javascript 4 28.02.2014 20:05
jquery-gp-gallery.js - разное отображение подгружаемых изображений frutality jQuery 1 09.09.2012 18:15
Неккоректное отображение jquery меню в Google Chrome и Opera Galyanov Opera, Safari и др. 6 25.01.2011 00:26