Формат для поля с ценой
Добрый день, не могли бы вы помочь с довольно таки простым на первый взгляд вопросом, преобразование цифрового значения в денежный с пробелом. Например у меня есть поле
<span class="price__new-val font_17">8500</span> Выводиться оно как 8500 Можно ли как то сделать так что бы оно выводилось в так: 8 500 руб. (то есть тысячные отделены пробелом |
Использовал такой способ
<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>
Здесь скорее всего надо наверное преобразование значение к числовому и уже после придавать формат |
Цитата:
<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>
|
Что бы добавить префикс руб. использовал этот код:
<script>
var targetElement = document.querySelector('.price__new-val') ;
targetElement.insertAdjacentHTML("beforeEnd", " руб.");
</script>
|
Да он работает на дестопе, но почему то когда закидываю его на релиз в Битрикс, он не работает.
|
Цитата:
o.textContent = o.textContent.replace(/\d(?=(\d{3})+$)/g, '$& ') + ' руб';
|
А почему не воспользоваться форматтером 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, время: 19:06. |