39 lines
1.4 KiB
JavaScript
39 lines
1.4 KiB
JavaScript
// Buat sebagai variabel global
|
|
window.formatNumber = function(value) {
|
|
if (!value && value !== 0) return '';
|
|
|
|
// Split nilai menjadi bagian integer dan desimal (jika ada)
|
|
const parts = value.toString().split('.');
|
|
const integerPart = parts[0];
|
|
const decimalPart = parts.length > 1 ? parts[1].substring(0, 3) : '';
|
|
|
|
// Format bagian integer dengan separator titik ribuan
|
|
const formattedInteger = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, '.');
|
|
|
|
// Gabungkan kembali dengan bagian desimal (jika ada)
|
|
return decimalPart ? `${formattedInteger},${decimalPart}` : formattedInteger;
|
|
};
|
|
|
|
window.parseNumberInput = function(value) {
|
|
if (value === undefined || value === null) return '';
|
|
|
|
// Validasi input: hanya menerima angka, titik, dan koma
|
|
// Periksa apakah ada lebih dari satu koma, jika ya, ambil yang pertama
|
|
let cleanValue = value.toString();
|
|
|
|
// Jika ada koma, pastikan tidak ada lebih dari 3 digit setelahnya
|
|
if (cleanValue.includes(',')) {
|
|
const parts = cleanValue.split(',');
|
|
// Bagian integer (sebelum koma)
|
|
const integerPart = parts[0].replace(/\./g, '');
|
|
// Bagian desimal (setelah koma), maksimal 3 digit
|
|
const decimalPart = parts[1].substring(0, 3);
|
|
// Gabungkan kembali dengan titik untuk JavaScript
|
|
cleanValue = integerPart + '.' + decimalPart;
|
|
} else {
|
|
// Jika tidak ada koma, cukup hapus semua titik
|
|
cleanValue = cleanValue.replace(/\./g, '');
|
|
}
|
|
|
|
return cleanValue;
|
|
}; |