Ввод текста html с динамическими нулями

Я пытаюсь создать маску для своего html с помощью javascript. Я использую следующий код, но мне это не удалось:

function valorMax(v){
  v=v.replace(/\D/g,"")
        if (v.length <= 20) { 
          v=v.replace(/(\d{17})(\d)/,"$10000000000000.$2")
        }
        return v
}

Мне нужно в текстовом поле при вводе значения валюты, оно автоматически завершается с 0 (ноль) и отделяет центы с. (точка), всего 19 цифр

Пример: введите 100, и значение в текстовом поле станет 00000000000000100,00.

Пример: введите 10,25, и значение в текстовом поле станет 0000000000000010,25.

Пример: введите 1,30, и значение в текстовом поле станет 0000000000000001,30.

Кто-нибудь может мне помочь? Спасибо большое.

что ты уже испробовал?

Brian Peacock 06.04.2019 22:24
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
55
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете использовать toFixed с padStart методами, чтобы добиться этого.

const padWithZeros = (number) => number.toFixed(2).toString().padStart(19, 0)

console.info(padWithZeros(100))
console.info(padWithZeros(10.25))
console.info(padWithZeros(1.3))

Таким образом, вы можете достичь решения без RegEx.

var input = '10.2'
function formatNumber(input){
  var wholeNumber = input.split('.')[0]
  var decimalNumber = input.split('.')[1] || ''
  if (decimalNumber.length < 2){
	  decimalNumber = decimalNumber.concat(...new Array(2 - decimalNumber.length).fill(0))
  }
  if (wholeNumber.length < 17){
	  wholeNumber = ''.concat(...new Array(17 - wholeNumber.length).fill(0), wholeNumber)
  }
  console.info(`${wholeNumber}.${decimalNumber}`)
}
formatNumber(input)

Специальное назначение .toLocaleString() — преобразование строк в чувствительные к языку форматы валюты.

// U.S. Currency
const us = (number, digits) => {
  return number.toLocaleString('en-US', {
    minimumIntegerDigits: digits,
    useGrouping: false,
    style: 'currency',
    currency: 'USD'
  });
}

// Generic Currency
const xx = (number, digits) => {
  return number.toLocaleString(undefined, {
    minimumIntegerDigits: digits,
    useGrouping: false,
    minimumFractionDigits: 2,
    maximumFractionDigits: 2
  });
}

console.info(us(111.3, 19));
console.info(us(2500, 19));
console.info(us(.02, 19));

console.info(xx(111.3, 19));
console.info(xx(2500, 19));
console.info(xx(.02, 19));

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