我正在尝试将整数转换为印度货币,并将它们返回到相同的输入标签,但是对于四位数,它工作得很好,此后,当我输入第五位数时,它再次从第五位数开始。请帮帮我。我是StackOverflow的新手。
function currency(element) {
let ele = document.getElementById(element.id);
let num = ele.value
let number = (parseInt(num))||0;
console.log(number.toLocaleString('en-IN'));
var int = number.toLocaleString('en-IN');
document.getElementById(element.id).value = int.toString();
}
它为1,234
提供输出1234
但是当我输入12345
时,它会将1
返回到输入标签
答案 0 :(得分:1)
键入1234
后,您的函数会将<input>
的值更改为1,234
。但是,当您键入5
时,您的函数会尝试从1,2345
中读取一个整数。逗号不是以10为底的有效数字,因此parseInt
在1
(step 13 in the parseInt
algorithm)处停止解析。您需要先清除<input>
的值,然后再将其传递给parseInt
:
let num = ele.value.replace(/[^\d]/g, ''); // remove all non-digits from num
let number = (parseInt(num))||0;