Bagaimana cara memformat mata uang dengan benar menggunakan jquery?

Saya tidak memerlukan topeng, tetapi saya memerlukan sesuatu yang akan memformat mata uang (di semua browser) dan tidak mengizinkan pengetikan huruf atau karakter khusus apa pun. Terima kasih untuk bantuannya

Contoh:

Berlaku: $50,00
$1,000,53

Tidak Sah: $w45.00
$34.3r6


person ninjasense    schedule 18.02.2011    source sumber
comment
Bisakah Anda menjelaskan mengapa yang lain tidak sesuai standar Anda?   -  person Jeff    schedule 18.02.2011
comment
StackOverflow adalah mesin pencari saya untuk pertanyaan seperti ini. Umpan balik komunitas di sini memungkinkan gambaran yang lebih cepat dan akurat tentang alat dan praktik apa yang dihargai. Saya katakan, teruslah mengajukan pertanyaan-pertanyaan seperti ini.   -  person Feckmore    schedule 28.01.2013
comment
Tiba di sini dari Google.   -  person the-nick-wilson    schedule 24.12.2015
comment
Pertanyaan ini adalah hasil pencarian Google teratas untuk mata uang format jquery   -  person Paul L    schedule 28.07.2016
comment
Apakah ini menjawab pertanyaan Anda? Bagaimana cara memformat angka sebagai string mata uang?   -  person Heretic Monkey    schedule 07.04.2020


Jawaban (7)


PLUGIN MATA UANG FORMAT JQUERY
http://code.google.com/p/jquery-formatcurrency/

person Robert Harvey    schedule 18.02.2011
comment
Sayang sekali itu tidak kompatibel dengan jQuery versi terbaru. - person Patrick; 11.01.2014
comment
yang ini berfungsi cukup baik pada jquery 2.0 plentz.github.io/jquery-maskmoney - person hal9000; 31.12.2014

Pilihan lain (Jika Anda menggunakan tampilan pisau cukur ASP.Net) adalah, Menurut pandangan Anda, Anda dapat melakukannya

<div>@String.Format("{0:C}", Model.total)</div>

Ini akan memformatnya dengan benar. catatan (item.total ganda/desimal)

jika di jQuery Anda juga bisa menggunakan Regex

$(".totalSum").text('$' + parseFloat(total, 10).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,").toString());
person Melu    schedule 06.06.2013
comment
Saya tidak menolaknya, tetapi saya tidak dapat menemukan @String.Format di referensi HTML atau jQuery mana pun. Dugaan saya ini ada hubungannya dengan HTML sisi server yang dihasilkan oleh ASP.NET. Apakah pertanyaan awal merujuk pada hal itu? - person Nate; 03.12.2013
comment
Bagi siapa pun yang bertanya-tanya di masa depan, @String.Format adalah mesin pisau cukur untuk ASP.NET || MVC - person Kyle; 14.01.2014
comment
Saya suka ekspresi regulernya. Mengapa .toString() di akhir? .replace mengembalikan sebuah string. - person xr280xr; 16.09.2014
comment
Saya juga tidak meremehkan ini, tetapi layak untuk memberikan solusi MVC Razor untuk pertanyaan yang tidak menyebutkan Razor, MVC, atau bahkan ASP.NET, dan jawabannya bahkan tidak menyatakan bahwa inilah solusi untuk MVC Pisau cukur. - person Jonathan Wood; 26.09.2014
comment
Ini adalah jawaban yang bagus, tetapi bagaimana cara saya mengubah regex untuk mendapatkan angka tanpa tempat desimal dan tanpa simbol dolar? misalnya saya ingin 16000000 ditampilkan sebagai 16.000.000 - person ministe2003; 28.01.2015
comment
Sudahlah, saya sudah menjawab pertanyaan saya sendiri: $(.totalSum).text('$' + parseFloat(value, 10).toFixed(0).replace(/(\d)(?=(?:[0) -9]{3})+\b)/gm, $1,).toString()); - person ministe2003; 28.01.2015
comment
Bagaimana jika saya ingin mengganti pemisah desimal dengan ',' dan yang lainnya dengan '.'? - person Deise Vicentin; 24.08.2015
comment
Setelah mencari kemana-mana dengan saran plugin dan sebagainya, yang ini berfungsi dengan sempurna! - person NoBullMan; 11.02.2019

Memperluas jawaban Melu, Anda dapat melakukan ini untuk memfungsikan kode dan menangani jumlah negatif.

Contoh Keluaran:
$5,23
-$5,23

function formatCurrency(total) {
    var neg = false;
    if(total < 0) {
        neg = true;
        total = Math.abs(total);
    }
    return (neg ? "-$" : '$') + parseFloat(total, 10).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,").toString();
}
person Chad Kuehn    schedule 19.05.2014

Sebagai akibat wajar mengapa plugin jQuery FormatCurrency adalah jawaban yang bagus, saya ingin membantah komentar Anda:

1. code.google.com/p/jquery-formatcurrency - Tidak memfilter semua huruf. Anda dapat mengetik satu huruf dan itu tidak akan menghapusnya.

Ya, formatCurrency() dengan sendirinya tidak memfilter huruf:

// only formats currency
$(selector).formatCurrency();

Namun toNumber(), yang disertakan dalam plugin formatCurrency, dapat melakukannya.

Oleh karena itu, Anda ingin melakukan:

// removes invalid characters, then formats currency
$(selector).toNumber().formatCurrency();
person Neptune Systems    schedule 12.03.2012

Gunakan jquery.inputmask 3.x. Lihat demo di sini

Sertakan file:

<script src="/assets/jquery.inputmask.js" type="text/javascript"></script>
<script src="/assets/jquery.inputmask.extensions.js" type="text/javascript"></script>
<script src="/assets/jquery.inputmask.numeric.extensions.js" type="text/javascript"></script>

Dan kode sebagai

$(selector).inputmask('decimal',
  { 'alias': 'numeric',
    'groupSeparator': '.',
    'autoGroup': true,
    'digits': 2,
    'radixPoint': ",",
    'digitsOptional': false,
    'allowMinus': false,
    'prefix': '$ ',
    'placeholder': '0'
  }
);

Highlight:

  • mudah digunakan
  • bagian opsional ada di dalam topeng
  • kemungkinan untuk mendefinisikan alias yang menyembunyikan kompleksitas
  • masker tanggal / waktu
  • topeng numerik
  • banyak panggilan balik
  • topeng yang tidak serakah
  • banyak fitur dapat diaktifkan/dinonaktifkan/dikonfigurasi berdasarkan opsi
  • mendukung atribut readonly/disabled/dir='rtl'
  • mendukung atribut data-inputmask
  • dukungan multi-masker
  • dukungan masker regex
  • dukungan topeng dinamis
  • dukungan masker pra-pemrosesan
  • pemformatan/validasi nilai tanpa elemen input
person Fernando Kosh    schedule 18.07.2014
comment
setelah mengunduh ZIP (dari web) saya menemukan bahwa file *.js di dalam ZIP memiliki konvensi penamaan file yang berbeda. aku agak bingung.... - person gumuruh; 02.07.2017
comment
@gumuruh Lihat ke dist/ folder file ZIP. ZIP yang dimasukkan ke root folder yang diekstraksi adalah paket dan tidak untuk digunakan. Perhatian pada ekstensi. Muat hanya apa yang Anda perlukan. - person Fernando Kosh; 11.02.2018
comment
@FernandoKosh @ drew010 Apakah mungkin menggunakan ini untuk banyak elemen pada satu halaman? Misalnya: $('.price-format').inputmaks() atau $('.price-format').each(function() { $(this).inputmask() }) - person remkovdm; 04.08.2020
comment
@remkovdm Sudah lama sejak saya menerapkannya sekarang, tapi ya, saya yakin itu baik-baik saja. Dokumen dan contoh menunjukkan $(selector) yang berarti dapat menjadi pemilih CSS seperti jQuery lainnya. Jadi $('.price-format').inputmask('decimal', { ... }); seharusnya berfungsi. - person drew010; 13.08.2020

Saya dulu menggunakan plugin mata uang format jquery, tetapi akhir-akhir ini sangat bermasalah. Saya hanya perlu memformat untuk USD/CAD, jadi saya menulis pemformatan otomatis saya sendiri.

$(".currencyMask").change(function () {
            if (!$.isNumeric($(this).val()))
                $(this).val('0').trigger('change');

            $(this).val(parseFloat($(this).val(), 10).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,").toString());
        });

Cukup atur kelas input apa pun yang harus diformat sebagai mata uang <input type="text" class="currencyMask" /> dan itu akan memformatnya dengan sempurna di browser apa pun.

person Greg Snider    schedule 01.06.2016

Coba mata uang regexp dengan jQuery (tanpa plugin):

$(document).ready(function(){
  $('#test').click(function() {
    TESTCURRENCY = $('#value').val().toString().match(/(?=[\s\d])(?:\s\.|\d+(?:[.]\d+)*)/gmi);
    if (TESTCURRENCY.length <= 1) {
      $('#valueshow').val(
        parseFloat(TESTCURRENCY.toString().match(/^\d+(?:\.\d{0,2})?/))
      );
    } else {
      $('#valueshow').val('Invalid a value!');
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="text" value="12345.67890" id="value">
<input type="button" id="test" value="CLICK">
<input type="text" value="" id="valueshow">

Sunting: Baru periksa nilainya menjadi valid/tidak valid

person KingRider    schedule 28.12.2015
comment
Apa masalahnya dengan downvote? Pertanyaan ini (Harap baca meta.stackoverflow.com/questions/251758/ terima kasih) - person KingRider; 28.03.2017