Как динамически автоматически отформатировать число в американскую валюту, используя только jQuery?

Я создаю форму, и мне нужно текстовое поле, в котором пользователь может вводить цены или сборы.

Я видел форму, которая может делать то, что я ищу, но я не уверен, как это сделать. То, что я ищу, по умолчанию, текстовое поле содержит $0,00. Когда пользователь начинает вводить число, оно действует следующим образом: 12345678 начинается с 0,01 > 0,12 > 1,23 > --- > $123 456,78.

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

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

1 ответ

Я хотел бы начать с предложения <input type="number"/> ограничить ввод только цифрами. Далее приведено регулярное выражение для обработки двух десятичных знаков и запятых.

var money = number.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1,');

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

$('input[type="number"]').on('keyup', function(e){
    var number = Number($(this).val());
    var money = number.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1,');
    $(this).val(money);
});

Эта часть - только начало. Есть несколько условий, которые вам нужно вставить. Например, вы можете проверить наличие нажатой клавиши, прежде чем разрешить изменение. Вы можете сделать это, проверив коды клавиш.

Другие вопросы по тегам