2011-09-06 200 views
31

Hay demasiadas preguntas y respuestas sobre esta funcionalidad básica, no puedo ver la madera de los árboles.JQuery Número de formato

En Java solo hay una respuesta simple (java.text.NumberFormat y sus subclases), así que estoy seguro de que la mayoría de los complementos, preguntas y respuestas llegarán a ser un estándar de facto para JQuery.

Este plugin es el mejor que he encontrado hasta ahora, pero no sé si todavía está desarrollado, es maduro etc.

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

¿Existe una solución mejor? ¿Es lo suficientemente maduro/activo como para confiar?


Editar:

Me gustaría ser capaz de monedas de formato, decimales, números enteros basados ​​en los mismos patrones de formato utiliza Java, por lo que los datos recibidas en el lado del cliente se puede formatear sin enviar primero al servidor.

p. Ej.

Formato 1000-$1,000 o 1,000.00 etc (el soporte del local es agradable)

Parece que http://plugins.jquery.com/project/numberformatter hace el trabajo, pero la pregunta era: "¿Estoy usando lo correcto" o "¿Hay una mejor manera de hacerlo?"

+2

¿Esto es una diatriba o una pregunta? – alex

+2

parece que ambos ... – SublymeRick

+0

para el registro Java y Javascript son dos cosas completamente diferentes. No es justo tocar js o jQuery por no tener una función java: P –

Respuesta

52

Yo recomiendo mirar este artículo sobre cómo utilizar Javascript para manejar el formato básico:

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; 
} 

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

Mientras jQuery puede hacer su vida más fácil en un millón de maneras diferentes que diría que es excesivo para esto. Tenga en cuenta que jQuery puede ser bastante grande y que el navegador de su usuario necesita descargarlo cuando lo usa en una página.

Al usar jQuery, debe dar un paso atrás y preguntar si contribuye lo suficiente como para justificar la sobrecarga adicional de descarga de la biblioteca.

Si necesita algún tipo de formateo avanzado (como las cosas de localización en el plugin que ha vinculado), o si ya está incluyendo jQuery, podría valer la pena buscar un plugin de jQuery.

nota al margen - check this out si desea obtener una risita sobre el uso excesivo de jQuery.

+1

Bueno y directo, gracias –

+4

He hecho un complemento jQuery con este código. Ahora es fácil de aplicar a varios lugares en una página: '$ ('. Number'). FormatNumber();'. El valor predeterminado es hacer 1343034.09 en 1,343,034.09 - https://github.com/RaphaelDDL/jquery.formatNumber – RaphaelDDL

+0

Abe, el enlace que proporcione es extremadamente útil. ¿Quizás podría editar su respuesta y agregar las funciones principales aquí en caso de que desaparezca? Ya tienes crédito adecuado. –

16

Usando el plugin jQuery Number Format, se puede obtener un número formateado en una de tres maneras:

// 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. 

Si no te gusta el formato, o si necesita localizar, existen otros parámetros que le permiten elija cómo se formatea el número:

.número (theNumber, decimalesPlaces, decimalSeparator, milesSeparator)

También puede obtener jQuery Number Format from GitHub.

+5

Incluir una referencia externa a una fuente bien documentada es apreciada aquí en Stack Overflow pero es importante incluir en su respuesta los fragmentos más importantes/relevantes de la fuente externa y dar contexto sobre cómo la respuesta es la pregunta. –

+0

Estaba usando este complemento por un tiempo y no se puede usar. Cuando escribe, cose los valores formateados con retraso. El cursor salta, por lo que si ingresas el campo y tienes 0, lo seleccionas y comienzas a escribir 220 cusor saltos y obtienes 202 etc., realmente es malo si quieres hacer páginas profesionales. –

1

Al poner juntos este concepto http://www.mredkj.com/javascript/numberFormat.html y $('.number').formatNumber();, puede usar la siguiente línea de código;

p. Ej. <td class="number">1172907.50</td> se formateará como <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

Si tiene que manejar múltiples monedas, varios formatos de número, etc. Me pueden recomendar autoNumeric. Funciona un placer Lo he usado con éxito desde hace varios años.

+0

Me gusta el complemento. funciona bien – Kevin