Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Формат для поля с ценой (https://javascript.ru/forum/dom-window/86211-format-dlya-polya-s-cenojj.html)

ajaxst 16.12.2024 17:22

Формат для поля с ценой
 
Добрый день, не могли бы вы помочь с довольно таки простым на первый взгляд вопросом, преобразование цифрового значения в денежный с пробелом. Например у меня есть поле
<span class="price__new-val font_17">8500</span>

Выводиться оно как 8500
Можно ли как то сделать так что бы оно выводилось в так:
8 500 руб. (то есть тысячные отделены пробелом

ajaxst 16.12.2024 17:31

Использовал такой способ
<div class="price__new-val">1000000</div>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
        <script>
$(document).ready(function() { 
var number = $('.price__new-val').text(); 
var formattedNumber = Number(number).toLocaleString(); 
$('.price__new-val').text(formattedNumber); });

        </script>


Здесь скорее всего надо наверное преобразование значение к числовому и уже после придавать формат

ksa 16.12.2024 19:08

Цитата:

Сообщение от ajaxst
преобразование цифрового значения в денежный с пробелом

Например вот так можно...

<div class="price__new-val">1000000</div>

<script>
document.querySelectorAll('.price__new-val').forEach(o => {
  o.textContent = o.textContent.replace(/\d(?=(\d{3})+$)/g, '$& ');
});
</script>

ajaxst 16.12.2024 20:02

Что бы добавить префикс руб. использовал этот код:
<script>
var targetElement = document.querySelector('.price__new-val') ;
targetElement.insertAdjacentHTML("beforeEnd", " руб.");
</script>

ajaxst 16.12.2024 20:04

Да он работает на дестопе, но почему то когда закидываю его на релиз в Битрикс, он не работает.

ksa 17.12.2024 09:20

Цитата:

Сообщение от ksa
o.textContent = o.textContent.replace(/\d(?=(\d{3})+$)/g, '$& ');

Просто добавить

o.textContent = o.textContent.replace(/\d(?=(\d{3})+$)/g, '$& ') + ' руб';

Nexus 18.12.2024 19:00

А почему не воспользоваться форматтером Intl.NumberFormat?
<div class="price__new-val">1000000</div>

<script>
document.querySelectorAll('.price__new-val').forEach(node => {
    node.textContent = (+node.textContent).toLocaleString('ru', {
        style: 'currency', 
        currency: 'RUB', 
        minimumFractionDigits: 0,
        currencyDisplay: 'narrowSymbol',
    });
});
</script>


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