【发布时间】:2018-07-04 03:57:30
【问题描述】:
我想在输入类型编号的 keyup 事件上添加千位分隔符 但这仅在 6 个字符中起作用,如果超过 6 个字符,则输入值已重置
这是我的短代码
<input type="number" id="tanpa-rupiah" step="any">
var dengan_rupiah = document.getElementById('dengan-rupiah');
dengan_rupiah.addEventListener('keyup', function(e)
{
dengan_rupiah.value = formatRupiah(this.value, 'Rp. ');
});
function formatRupiah(bilangan, prefix)
{
var number_string = bilangan.replace(/[^,\d]/g, '').toString(),
split = number_string.split(','),
sisa = split[0].length % 3,
rupiah = split[0].substr(0, sisa),
ribuan = split[0].substr(sisa).match(/\d{1,3}/gi);
if (ribuan) {
separator = sisa ? '.' : '';
rupiah += separator + ribuan.join('.');
}
rupiah = split[1] != undefined ? rupiah + ',' + split[1] : rupiah;
return prefix == undefined ? rupiah : (rupiah ? 'Rp. ' + rupiah : '');
}
【问题讨论】:
-
您的期望是什么?你希望它工作多少个数字?
-
尽可能的
-
问题是当数字长度大于 6 时,它会变成即 4.444.444 并且输入类型数字中的点用于小数分隔而不是千位。因此,由于一个数字不能有两个小数分隔符,所以它被丢弃了。
-
您应该执行 Mamun 和 VicJordan 建议的答案,但用点代替逗号。
标签: javascript jquery