Memberi Titik Otomatis pada Angka Saat Menginput dengan Javascript

Seperti yang kita ketahui, format penulisan angka di Indonesia dipisahan dengan simbol titik (.) untuk angka ribuan, jutaan, miliaran dst.

Tetapi dalam pemrograman, saat melakukan penginputran form biasanya sebuah angka belum dipisahkan dengan simbol apapun, sehingga yang terlihat adalah hanya sebuah angka saja.


Perhatikan angka berikut ini “1250“.

Dengan mudahnya angka di atas jika kita sebutkan akan menjadi “Seribu Dua Ratus Lima Puluh”.

Berikutnya perhatikan angka ini “1241231241231“.

Kalian pasti tidak bisa langsung menyebutkannya kan?. Untuk menyebutkan angka di atas kalian perlu memecahnya menjadi 3 angka dari belakang agar bisa mengetahui apakah angka tersebut sudah menjadi ribuan, jutaan, miliaran atau triliunan.

Dalam dunia akuntansi, angka yang tidak dipisahkan dengan simbol pemisahnya akan membuat pekerjaan menjadi tidak optimal karena kesulitan untuk mengetahui angka tersebut.

Sebagai programmer yang baik dan mengerti perasaan user atau pemakai program yang kita buat, kita perlu memisahkan angka tersebut dengan simbol. Pada Javascript kita bisa membuat sebuah function untuk pemisah angka saat melakukan penginputan.

Perhatikan kodingan di bawah

<input type="text" id="inputAngka">

<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<script type="text/javascript">
	$('#inputAngka').on('keyup',function(){
		var angka = $(this).val();

		var hasilAngka = formatRibuan(angka);

		$(this).val(hasilAngka);
	});

	function formatRibuan(angka){
		var number_string = angka.replace(/[^,\d]/g, '').toString(),
		split   		= number_string.split(','),
		sisa     		= split[0].length % 3,
		angka_hasil     = split[0].substr(0, sisa),
		ribuan     		= split[0].substr(sisa).match(/\d{3}/gi);



		// tambahkan titik jika yang di input sudah menjadi angka ribuan
		if(ribuan){
			separator = sisa ? '.' : '';
			angka_hasil += separator + ribuan.join('.');
		}

		angka_hasil = split[1] != undefined ? angka_hasil + ',' + split[1] : angka_hasil;
		return angka_hasil;
	}
</script>

Kita juga dapat mengolah kodingan di atas menjadi seperti ini

About the Author: amoe

You May Also Like

16 Comments

    1. Terima kasih ka sudah mampir. Diganti titik koma seperti apa ya? apakah simbol titik (.) diganti jadi titik koma/semicolon (;) ?

  1. Yang sudah dibuat diatas itu sparatornya titik, skrg klo menggunakan koma bagaimana codingnya?, terima kasih banyak pencerahannya

    1. Mungkin bisa dicoba dengan kode ini gan untuk function formatRibuan()

      function formatRibuan(angka) {
        var number_string = angka.replace(/[^\.\d]/g, '').toString(),
          split = number_string.split('.'),
          sisa = split[0].length % 3,
          angka_hasil = split[0].substr(0, sisa),
          ribuan = split[0].substr(sisa).match(/\d{3}/gi);
      
        // tambahkan titik jika yang di input sudah menjadi angka ribuan
        if (ribuan) {
          separator = sisa ? ',' : '';
          angka_hasil += separator + ribuan.join(',');
        }
      
        angka_hasil =
          split[1] != undefined ? angka_hasil + '.' + split[1] : angka_hasil;
        return angka_hasil;
      }
      
      1. baik, terimaksih banyak pencarahannya sudah sukses, tp mash ada sedikit kendala setelah sy coba klo ditambah angka minus didepannya tidak bisa, mohon pencerahannya, terima kasih

        1. kalo tambahkan minus, bisa dicoba menggunakan variable minus kaya berikut gan

          function formatRibuan(angka) {
            let minus = /^-/.test(angka.toString()) == true ? "-" : "";
            var number_string = angka.replace(/[^\.\d]/g, '').toString(),
              split = number_string.split('.'),
              sisa = split[0].length % 3,
              angka_hasil = split[0].substr(0, sisa),
              ribuan = split[0].substr(sisa).match(/\d{3}/gi);
          
            // tambahkan titik jika yang di input sudah menjadi angka ribuan
            if (ribuan) {
              separator = sisa ? ',' : '';
              angka_hasil += separator + ribuan.join(',');
            }
          
            angka_hasil =
              split[1] != undefined ? minus + angka_hasil + '.' + split[1] : minus + angka_hasil;
            return angka_hasil;
          }
          
    1. Bisa tapi asal type input nya jangan number harus text. Kalo input nya type number pas di angka ke 7 (jutaan) makan jquery akan mengembalikan nilai return menghasilkan undefined ke nilai awal. Kalo pake input type number jangkauan RegEx nya menghasilkan undefined. jadi angkanya akan di reset.

  2. Sangat membantu, oh iya min kalau saya ingin menambahkan atau mengkalikan hasil inputan yang sudah mengandung titik ini bagaimana ya, saya coba 1.000*1 outputnya 1

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *