输入带有动态零的HTML文本

时间:2019-04-06 20:20:29

标签: javascript html

我正在尝试使用javascript为我的html创建掩码。我正在使用以下代码,但未成功:

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

在输入货币值时,我需要在文本字段中输入,它会自动以0(零)结尾,并以分隔美分。 (点),总值为19位数字

Ex:输入100,文本字段中的值将变为00000000000000100.00

Ex:输入10.25,文本字段中的值将变为0000000000000010.25

Ex:输入1.30,文本字段中的值将变为0000000000000001.30

有人可以帮助我吗? 非常感谢。

3 个答案:

答案 0 :(得分:3)

您可以将toFixedpadStart方法配合使用来实现此目的。

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

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

答案 1 :(得分:0)

像这样,您无需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.log(`${wholeNumber}.${decimalNumber}`)
}
formatNumber(input)

答案 2 :(得分:0)

.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.log(us(111.3, 19));
console.log(us(2500, 19));
console.log(us(.02, 19));

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