2012-12-28 13 views
12

Numaraları kullanıcı türleri olarak biçimlendirmek için aşağıdaki işlevi kullanıyorum. Her 3 sayıya bir virgül ekler. Ör: 45696.36, 45,696.36 olur. Bununla birlikte, bir sorunla karşılaşıyorum. Ondalıktan sonraki sayılar 3 basamaktan uzunsa, onlara virgül eklemeye başlar. Ör: 1136.6696, 1,136.6,696 olur. o ondalık sonra virgül koyarak durur böylecejQuery işlevi, sayıları virgül ve ondalıklarla biçimlendirmek için

$.fn.digits = function(){ 
    return this.each(function() { 
    $(this).val($(this).val().replace(/[^0-9.-]/g, '')); 
    $(this).val($(this).val().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); 
    }) 
} 

nasıl düzeltebilirim:

Bu benim fonksiyondur? JQuery 1.8 kullanıyorum. Teşekkürler!

+0

Daha iyi bir çözüm yolu: http://stackoverflow.com/a/1867641 9/21838 – Pyrolistical

cevap

39

gibi da '.' karakteri adresinden dize bölme ve daha sonra sadece ilk bölümündeki virgülle dönüşüm gerçekleştirerek bunu başarabilir:

function ReplaceNumberWithCommas(yourNumber) { 
    //Seperates the components of the number 
    var n= yourNumber.toString().split("."); 
    //Comma-fies the first part 
    n[0] = n[0].replace(/\B(?=(\d{3})+(?!\d))/g, ","); 
    //Combines the two sections 
    return n.join("."); 
} 

ReplaceNumberWithCommas(1136.6696); //yields 1,136.6696 

Example

+0

dang bu güzel bir ifade. Bunu en son çözdüğümde, _again_ dizesini tersine çevirmek, virgülleri diziye eklemek ve tekrar katılmak için ayrıldım. – Mathletics

+0

Mükemmel çalıştı. Teşekkürler! – Jeff

+0

Bu para birimi ile kullanılıyorsa - her zaman ondalık değeri olmaz - sizinNumber = yourNumber.toFixed (2) 'yi eklemek, her zaman 0 –

1

kullandığım lib:

accounting.format(1136.6696, 4) // 1,136.6696 
İlgili konular