gpt4 book ai didi

javascript - 每 3 位数字中为货币添加一个点

转载 作者:行者123 更新时间:2023-11-28 17:35:03 25 4
gpt4 key购买 nike

我有一个代码,它会为每 3 位数字提供一个点,如下面的代码片段

function convertToRupiah(angka)
{
var rupiah = '';
var angkarev = angka.toString().split('').reverse().join('');

for(var i = 0; i < angkarev.length; i++)
if(i%3 == 0) rupiah += angkarev.substr(i,3)+'.';

return rupiah.split('',rupiah.length-1).reverse().join('');
}

function showkerugian(str)
{
// var tindak_lanjut =
$('#nilai_tindak_lanjut').val().replace(".", "").replace(".", "");
var temuan = str.replace(".", "").replace(".", "");
// var total = temuan-tindak_lanjut;

$('#nilai_potensi_kerugian').val(convertToRupiah(temuan));
};

$('input#nilai_temuan').on('keyup focusin focusout ', (function(event)
{
if(event.which >= 37 && event.which <= 40) return;

// format number
$(this).val(function(index, value) {
return value
.replace(/\D/g, "")
.replace(/\B(?=(\d{3})+(?!\d))/g, ".");
});
})
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="text" oninput="showkerugian(this.value)" class="form-control nominal" id="nilai_temuan" name="nilai_temuan">
<input type="text" class="form-control nominal" name="nilai_potensi_kerugian" id="nilai_potensi_kerugian" readonly>

但是当数字达到十亿(例如10.000.000.000)时,ID为nilai_potensi_kerugian的输入文本总是出错。我的代码可能会出现什么问题?

最佳答案

问题出在您的 showkerugian 函数内部:

var temuan = str.replace(".", "").replace(".", "");

前面的语句仅替换 str 变量中最多两个 .。因此,需要两个以上点的数字无法正确重置。了解更多关于 string.replace .

使用 RegExp 作为 replace 函数中的模式来检查问题和可能的解决方案:

console.log('10.000.000.000'.replace('.', '').replace('.', ''));
// -> 10000000.000

console.log('10.000.000.000'.replace(/\./g, ''));
// -> 10000000000

以下内容包括您的代码片段中的修复:

function convertToRupiah(angka){
var rupiah = '';
var angkarev = angka.toString().split('').reverse().join('');

for(var i = 0; i < angkarev.length; i++)
if(i%3 == 0) rupiah += angkarev.substr(i,3)+'.';

return rupiah.split('',rupiah.length-1).reverse().join('');
}

function showkerugian(str) {
var temuan = str.replace(/\./g, ""); // update pattern to regex in order to replace all `.` occurrences

$('#nilai_potensi_kerugian').val(convertToRupiah(temuan));
};

$('input#nilai_temuan') .on('keyup focusin focusout ', function(event) {
if(event.which >= 37 && event.which <= 40) return;
// format number
$(this).val(function(index, value) {
return value.replace(/\D/g, "")
.replace(/\B(?=(\d{3})+(?!\d))/g, ".");
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="text" oninput="showkerugian(this.value)" class="form-control nominal" id="nilai_temuan" name="nilai_temuan">
<input type="text" class="form-control nominal" name="nilai_potensi_kerugian" id="nilai_potensi_kerugian" readonly>

关于javascript - 每 3 位数字中为货币添加一个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49332040/

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