Мне пришлось выбирать между преобразованиями parseFloat () и Number (), прежде чем я смог сделать вызов toFixed (). Вот пример форматирования чисел после захвата пользовательского ввода.
HTML:
<input type="number" class="dec-number" min="0" step="0.01" />
Обработчик события:
$('.dec-number').on('change', function () {
const value = $(this).val();
$(this).val(value.toFixed(2));
});
Приведенный выше код приведет к исключению TypeError. Обратите внимание, что хотя тип ввода html - «число», пользовательский ввод - это тип данных «строка». Однако функция toFixed () может быть вызвана только для объекта, который является Number.
Мой окончательный код будет выглядеть следующим образом:
$('.dec-number').on('change', function () {
const value = Number($(this).val());
$(this).val(value.toFixed(2));
});
Причина, по которой я предпочитаю приводить с помощью Number () вместо parseFloat (), заключается в том, что мне не нужно выполнять дополнительную проверку ни для пустой входной строки, ни для значения NaN. Функция Number () автоматически обработает пустую строку и преобразует ее в ноль.