gpt4 book ai didi

javascript - html 输入类型数字,带千位分隔符

转载 作者:行者123 更新时间:2023-11-30 20:23:41 25 4
gpt4 key购买 nike

我想在输入类型数字的 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 : '');
}

这是我的 fiddle https://jsfiddle.net/C2heg/4619/

最佳答案

这可能适合你。在 keydown 上,如果它不是数字键,则会阻止默认操作。在 keyup 上,解析该值并更新它。使用 data- 属性来存储和获取原始值。

var elem = document.getElementById("num");

elem.addEventListener("keydown",function(event){
var key = event.which;
if((key<48 || key>57) && key != 8) event.preventDefault();
});

elem.addEventListener("keyup",function(event){
var value = this.value.replace(/,/g,"");
this.dataset.currentValue=parseInt(value);
var caret = value.length-1;
while((caret-3)>-1)
{
caret -= 3;
value = value.split('');
value.splice(caret+1,0,",");
value = value.join('');
}
this.value = value;
});

function showValue()
{
console.log(document.getElementById("num").dataset.currentValue);
}
<input type="text" id="num" maxlength="30">
<button onclick="showValue()">Get Value</button>

关于javascript - html 输入类型数字,带千位分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51165540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com