Как мне динамически добавлять запятые, когда пользователь вводит числа? Есть ли хороший форматтер чисел, который бы помог? Я должен добавить эти числа позже, поэтому в конце концов мне придется убрать запятые в строке. Но на экране должны отображаться запятые для лучшей читаемости.
Может ли jQuery добавлять запятые при вводе чисел пользователем?
comment
Так подождите, вы хотите, чтобы после каждого числа добавлялась запятая? Так что, набрав 123456, я получу 1,2,3,4,5,6? Или вы просто заменяете пробелы запятыми?
- person Tim Meers   schedule 13.04.2010
comment
как отвечает Мацек, он, скорее всего, хочет добавить разделители тысяч.
- person Adriano Varoli Piazza   schedule 13.04.2010
Ответы (2)
Запустите фрагмент кода, чтобы убедиться, что он работает
$('input.number').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="number">
person
maček
schedule
13.04.2010
Вы можете просто пропустить необходимость повторного вызова jQuery в функции keyup, просто используя это повсюду. Затем замените var num = $ this.val (). Replace () на this.value.replace () и $ this.val (num.replace ()) на this.value = num.replace ().
- person Bob; 14.04.2010
@Bob, я ценю ваш вклад, но использование методов jQuery за счет вызова
$()
широко распространено в сообществе jQuery. Именно поэтому почему jQuery в первую очередь имеет доступные методы.
- person maček; 14.04.2010
Я просто пробовал этот кусок кода, а в Chrome и FF запятые не помещаются на 1 место. Например, 1234 - ›1234 и 12345 -› 1,2345.
- person StoicLoofah; 25.02.2013
@ maček, можете ли вы решить проблему в этом коде, если я использую обратный пробел, запятая должна быть в точном положении. jsfiddle.net/23Ccf
- person Naveed; 08.07.2013
@Naveed (и все остальные), это давно пора, но я внес изменения в этот код, чтобы сделать его более надежным. Регулярное выражение было улучшено, чтобы устранить некоторые проблемы. Это также позволяет пользователю нажимать клавишу возврата, и запятые остаются правильными.
- person maček; 08.07.2013
Именно то, что я искал
- person vegas2033; 19.04.2017
не работает, когда ввод объявлен type = number :(
- person Brian; 10.03.2018
@ maček Есть ли способ, если это сработает, если
input type="number"
?
- person ; 23.04.2018
@BrianVanegasParra Удалось ли вам это сделать, если
input type="number"
?
- person ; 23.04.2018
@ maček, как это сделать, включая десятичные знаки?
- person Azis; 19.07.2018
Это работает, только если мне не нужно вставлять десятичные дроби.
- person user2342558; 30.06.2021
Вот реализация ответа @ maček на ванильном JS, если вы не хотите использовать jQuery:
var el = document.querySelector('input.number');
el.addEventListener('keyup', function (event) {
if (event.which >= 37 && event.which <= 40) return;
this.value = this.value.replace(/\D/g, '')
.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
});
<input class="number">
person
aboutaaron
schedule
23.12.2016
Я могу ввести здесь только 4 цифры, по любой конкретной причине, потому что у меня будет более 4 цифр, спасибо
- person parlad; 19.07.2017
Это работает, только если мне не нужно вставлять десятичные дроби.
- person user2342558; 30.06.2021