Home > Blockchain >  JavaScript formatting numbers in input by commas not working
JavaScript formatting numbers in input by commas not working

Time:05-17

I need to separate number with commas and I used code block from another question I found here but it's not working as expected

The input

<input type="text" name="budget" placeholder="Total Budget" >

The JS

$('input[name=budget]').keyup(function (e) { 
    e.preventDefault();
    let value = $(this).val();
    let newValue = value.toString().replace(/\B(?=(\d{3}) (?!\d))/g, ",")
    $(this).val(newValue);
});

When I tested this code I faced a problem

I typed 1000 and it showed correctly 1,000

But when I typed another 0 the number returned into this 1,0,000

And every 0 I increase it adds a comma after it like this 1,0,0,0,0,000

CodePudding user response:

You need to remove commas first

let newValue = value.toString().replace(/,/g,"").replace(/\B(?=(\d{3}) (?!\d))/g, ",")

CodePudding user response:

There is a native solution for formatting numbers Intl.NumberFormat

I would use that, instead of a regExp replace.

const numberFormatter = new Intl.NumberFormat();
const newValue = numberFormatter.format(value);
  • Related