Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Разделитель разрядов (https://javascript.ru/forum/project/49313-razdelitel-razryadov.html)

thedmkw 07.08.2014 05:39

Разделитель разрядов
 
Есть код
<center><form action="LINK" metod="GET">
<input id="ammountrub" maxlength="10" type="text" name="cost" required value="" placeholder="Рублей" onkeyup='document.getElementById("result").innerText=(this.
value*1000 + "$");' onkeydown='document.getElementById("result").innerText=(this.
value*1000 + "$");'><input type="hidden" name="login" value="1"><b><span style="position: absolute; margin-top: 1%; margin-left: 1%;" title="Вы получите столько валюты" id='result'>0$</span></b><br><input type="submit" value="Оплатить"></input>
</form></center>
<script>
document.getElementById("ammountrub").onkeypress= function(event){
 event= event || window.event;
 if (event.charCode && (event.charCode < 48 || event.charCode > 57))
  return false;
};
</script>


Необходимо чтобы число из
<span id="result"></span>

появлялось сразу разделенным на разряды.

Например:
1000000 > 1,000,000
100000 > 100,000
10000 > 10,000
1000 > 1,000

Надеюсь на вашу помощь :yes:
сам я в этом не силен...

Aetae 07.08.2014 08:17

<center>
  <form action="LINK" metod="GET">
    <input id="ammountrub" maxlength="10" type="text" name="cost" required value="" placeholder="Рублей" onkeyup="key(this.value)" onkeydown="key(this.value)">
  <input type="hidden" name="login" value="1">
  <b>
    <span style="position: absolute; margin-top: 1%; margin-left: 1%;" title="Вы получите столько валюты" id='result'>
      0$
    </span>
  </b>
  <br>
  <input type="submit" value="Оплатить">
</form>
</center>
<script>
  function key(val){
    document.getElementById("result").innerHTML=(val*1000 + "$").replace(/\d(?=(?:\d{3})+(?:\D|$))/g,'$&,');
  }
  document.getElementById("ammountrub").onkeypress= function(event){
    event= event || window.event;
    if (event.charCode && (event.charCode < 48 || event.charCode > 57))
      return false;
  }
</script>


P.S. 1. innerText в firefox не работает, там textContent.
2.</input> - это ошибка, input - один тэг.

thedmkw 08.08.2014 03:16

Большое спасибо!

Мне опять нужна ваша помощь, как выполнить округление/отсекание дробной части до 2 цифр в
<span id="allua"></span>
?

Вот полный код:
<center>
  <form action="LINK" metod="GET">
    <input class="ammountrub" id="ammountrub" maxlength="5" type="text" name="cost" required value="" placeholder="Рублей" onkeyup="key(this.value)" onkeydown="key(this.value)">
  <input type="hidden" name="login" value="1">
  <b>
    <span class="resultcss" style="font-size: 19px; position: absolute; margin-top: 1.01%; margin-left: 1%;" title="Вы получите столько валюты" id='result'>
      0$
    </span>
  </b>
  <br>
  <input type="submit" style="margin-left: -22.535%; margin-top: -0.05%; font-size: 16px; padding: 2px; padding-left: 6px; padding-right: 6px;" value="Оплатить">
</form>
<span style="font-size: 17px; position: absolute; margin-top: -4.15%; margin-left: -5%;">Итого:</span><div id="allmoney" style="font-size: 17px; position: absolute; margin-top: -4.144%; margin-left: 50.7%;"><span id="allrub">0 руб.</span><span id="allua" style="margin-left: 6px;">(~0 UAH)</span></div>
</center>
<script>
  function key(val){
    document.getElementById("result").innerHTML=(val*1000 + "$").replace(/\d(?=(?:\d{3})+(?:\D|$))/g,'$& ');
    document.getElementById("allrub").innerHTML=(val*1 + " руб.").replace(/\d(?=(?:\d{3})+(?:\D|$))/g,'$& ');
    document.getElementById("allua").innerHTML=("(~" + val*0.34 + " UAH)").replace(/\d(?=(?:\d{3})+(?:\D|$))/g,'$& ');
  }
  document.getElementById("ammountrub").onkeypress= function(event){
    event= event || window.event;
    if (event.charCode && (event.charCode < 48 || event.charCode > 57))
      return false;
  }
</script>

Aetae 08.08.2014 10:36

http://javascript.ru/Number/toFixed

Zend 11.08.2014 22:35

String.prototype.reverse = function () {
    return this.split('').reverse().join('');
};

var money = function (n) {
    return n.toString().reverse().replace(/(\d{3})(?=\d)/g, '$1,').reverse();
};

alert([money(1000), money(10000), money(100000), money(1000000)].join(' ~ '));



Давайте, ругайте меня за то что я нагадил в прототип.

Aetae 11.08.2014 22:44

Zend, накуя собственно? Выше мой вариант без всяких реверсов.

Zend 11.08.2014 22:50

Aetae,
$& - а что это значит в регулярках?

Aetae 12.08.2014 00:18

Zend, всё вхождение.
alert('abc_остальная_строка_'.replace(/a(b)c/, '$$&: $&\n$$1: $1\n\n'))


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