2011-09-06 14 views
31

Ci sono troppe domande e risposte su questa funzionalità di base, non riesco a vedere il legno per gli alberi.Formattazione numero JQuery

In Java c'è solo una risposta semplice (java.text.NumberFormat e le sue sottoclassi), quindi sono sicuro che la maggior parte dei plugin, domande e risposte matureranno alla fine con uno standard de facto per JQuery.

Questo plugin è il migliore che ho trovato finora, ma non so se è ancora sviluppato, è maturo ecc

http://plugins.jquery.com/project/numberformatter

C'è una soluzione migliore? È abbastanza maturo/attivo su cui fare affidamento?


Edit:

mi piacerebbe essere in grado di valute formato, decimali, numeri interi basati sugli stessi modelli di formato utilizza Java, in modo che i dati recieved sul lato client può essere formattato senza l'invio prima al server.

ad es.

Format 1000-$1,000 o 1,000.00 ecc (supporto locale è bello)

sembra che http://plugins.jquery.com/project/numberformatter fa il lavoro, ma la domanda era: "Sto usando la cosa giusta" o "C'è un modo migliore per farlo?"

+2

È uno sfogo o una domanda? – alex

+2

sembra che entrambi ... – SublymeRick

+0

per il record Java e Javascript sono due cose completamente diverse. Non è giusto battere js o jQuery per non avere una funzione java: P –

risposta

52

mi raccomando guardando questo articolo su come utilizzare javascript per gestire la formattazione di base:

function addCommas(nStr) 
{ 
    nStr += ''; 
    x = nStr.split('.'); 
    x1 = x[0]; 
    x2 = x.length > 1 ? '.' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 
    while (rgx.test(x1)) { 
     x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
    } 
    return x1 + x2; 
} 

fonte: http://www.mredkj.com/javascript/numberFormat.html

Mentre jQuery può rendere la vita più facile in un milione di modi diversi I direi che è eccessivo per questo. Tieni presente che jQuery può essere abbastanza grande e il browser dell'utente deve scaricarlo quando lo si utilizza in una pagina.

Quando si utilizza jQuery, è necessario tornare indietro e chiedere se contribuisce abbastanza da giustificare il sovraccarico aggiuntivo del download della libreria.

Se hai bisogno di una sorta di formattazione avanzata (come la localizzazione nel plugin che hai collegato), o stai già includendo jQuery, potrebbe valere la pena guardare un plugin jQuery.

Nota a margine - check this out se si vuole ottenere una risatina sull'uso eccessivo di jQuery.

+1

Buono e diretto, grazie –

+4

Ho creato un plug-in jQuery con questo codice. Ora è facile da applicare a più posti in una pagina: '$ ('. Number'). FormatNumber();'. L'impostazione predefinita è 1343034.09 su 1.343.034,09 - https://github.com/RaphaelDDL/jquery.formatNumber – RaphaelDDL

+0

Abe, il collegamento fornito è estremamente utile. Forse potresti modificare la tua risposta e aggiungere le funzioni principali qui se scompare? Hai già ricevuto il giusto credito. –

16

Utilizzando il plugin jQuery Number Format, è possibile ottenere un numero formattato in uno dei tre modi:

// Return as a string 
$.number(1234.5678, 2); // Returns '1,234.57' 

// Place formatted number directly in an element: 
$('#mynum').number(1234.5678); // #mynum would then contain '1,235' 

// Replace existing number values in any element 
$('span.num').number(true, 2); // Formats and replaces existing numbers in those elements. 

Se non ti piace il formato, o avete bisogno di localizzare, ci sono altri parametri che consentono di scegli come viene formattato il numero:

.numero (theNumber, decimalPlaces, decimalSeparator, thousandSeparator)

È inoltre possibile ottenere jQuery Number Format from GitHub.

+5

Includere un riferimento esterno a un'origine ben documentata è apprezzato qui su Stack Overflow ma è importante includere nella risposta i frammenti più importanti/rilevanti dalla fonte esterna e dare un contesto su come la risposta alla domanda. –

+0

Stavo usando questo plugin per un po 'e non è utilizzabile. Quando digiti cuci come i valori sono formattati con ritardo. Il cursore salta, quindi Se inserisci un campo e ne hai inserito 0, lo hai selezionato e inizi a digitare 220 cusor jumps e ottieni 202 ecc. Molto male se vuoi fare pro-page. –

1

Mettendo insieme questo concetto http://www.mredkj.com/javascript/numberFormat.html e $('.number').formatNumber();, è possibile utilizzare la seguente riga di codice;

ad es. <td class="number">1172907.50</td> saranno formattati come <td class="number">1,172,907.50</td>

$('.number').text(function() { 
    var str = $(this).html() + ''; 
    x = str.split('.'); 
    x1 = x[0]; x2 = x.length > 1 ? '.' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 
    while (rgx.test(x1)) { 
     x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
    } 
    $(this).html(x1 + x2); 
}); 
2

Se è necessario gestire più valute, vari formati numerici ecc posso consigliare autoNumeric. Funziona a meraviglia. Lo stanno usando con successo da diversi anni.

+0

Mi piace il plugin. funziona bene – Kevin