jQuery поле ввода автоматически добавляет DOT в формат валюты и разрешает только числовые - PullRequest
4 голосов
/ 23 марта 2020

У меня есть поле ввода с условием, чтобы разрешить только цифры c. При добавлении цифр c автоматически добавляются точки в формате валюты, как показано ниже.

100 = 100
1000 = 1.000
10000 = 10.000
1000000 = 100.000
1000000 = 1.000.000


<input type="text" class="form-control" name="number_one" id="number_one" onkeypress="return event.charCode >= 48 && event.charCode <= 57" onkeyup="return CurrencyFormat(this.value)">

Может кто-нибудь подсказать мне, как вызвать значение функции.

Я нашел следующие полезные, но Как изменить эту функцию, чтобы автоматически добавлять точки в поле ввода и условие, чтобы разрешать только цифры .

function getNumberWithCommas(number) {
    return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
}

Спасибо.

Ответы [ 2 ]

3 голосов
/ 23 марта 2020

Проверьте следующую демонстрацию фрагмента.

$('input.numberformat').keyup(function(event) {

  // skip for arrow keys
  if(event.which >= 37 && event.which <= 40) return;

  // format number
  $(this).val(function(index, value) {
    return value
    .replace(/\D/g, "")
    .replace(/\B(?=(\d{3})+(?!\d))/g, ".")
    ;
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<input class="numberformat">
0 голосов
/ 23 марта 2020

Не уверен, что вы пытаетесь сделать, но чтобы вызвать функцию для значения элемента, вы можете установить атрибут onchange, но если у вас уже есть функция, которая обрабатывает onchange и вы хотите интегрировать ее с этим функцию, пожалуйста, добавьте к своему вопросу тоже, и я исправлю свой ответ соответственно.

function CurrencyFormat(el) {
    let val = el.value.split('.').join('');
    el.value = val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
}
<input type="text" class="form-control" name="number_one" id="number_one" onkeypress="CurrencyFormat(this)" >
...