quitar - separar numero por miles javascript
agregar comas a un nĂºmero en jQuery (10)
Tengo estos números
10999
y 8094
y 456
Y todo lo que quiero hacer es agregar una coma en el lugar correcto si es necesario así que se ve así
10,999
y 8,094
y 456
Todos están dentro de una etiqueta de ap como esta <p class="points">10999</p>
etc.
Se puede hacer?
Lo intenté aquí con la ayuda de otras publicaciones http://jsfiddle.net/pdWTU/1/ pero parece que no funciona
Gracias
Jamie
ACTUALIZAR
Enredado un poco y se las arregló para descubrirlo aquí http://jsfiddle.net/W5jwY/1/
Ir a ver el nuevo plugin Globalization para una mejor forma de hacerlo
Gracias
Jamie
Aquí está mi versión coffeescript del violín de @ baacke en un comentario a @Timothy Perez
class Helpers
@intComma: (number) ->
# remove any existing commas
comma = /,/g
val = number.toString().replace comma, ''''
# separate the decimals
valSplit = val.split ''.''
integer = valSplit[0].toString()
expression = /(/d+)(/d{3})/
while expression.test(integer)
withComma = "$1,$2"
integer = integer.toString().replace expression, withComma
# recombine with decimals if any
val = integer
if valSplit.length == 2
val = "#{val}.#{valSplit[1]}"
return val
Echa un vistazo al complemento de globalización lanzado recientemente por jQuery de Microsoft
Eche un vistazo a Numeral.js . Puede formatear números, moneda, porcentajes y tiene soporte para localización.
Funciona en todos los navegadores, esto es todo lo que necesita.
function commaSeparateNumber(val){
while (/(/d+)(/d{3})/.test(val.toString())){
val = val.toString().replace(/(/d+)(/d{3})/, ''$1''+'',''+''$2'');
}
return val;
}
Escribió esto para ser compacto, y al punto, gracias a regex. Esto es JS directo, pero puedes usarlo en tu jQuery así:
$(''#elementID'').html(commaSeparateNumber(1234567890));
o
$(''#inputID'').val(commaSeparateNumber(1234567890));
La respuesta de Timothy Pirez fue muy correcta, pero si necesita reemplazar los números con comas Inmediatamente como usuario escribe en el campo de texto, puede usar la función Keyup.
$(''#textfield'').live(''keyup'', function (event) {
var value=$(''#textfield'').val();
if(event.which >= 37 && event.which <= 40){
event.preventDefault();
}
var newvalue=value.replace(/,/g, '''');
var valuewithcomma=Number(newvalue).toLocaleString(''en'');
$(''#textfield'').val(valuewithcomma);
});
<form><input type="text" id="textfield" ></form>
Otra forma de hacerlo:
function addCommas(n){
var s = "",
r;
while (n) {
r = n % 1000;
s = r + s;
n = (n - r)/1000;
s = (n ? "," : "") + s;
}
return s;
}
alert(addCommas(12345678));
Supongo que estás haciendo algún tipo de localización, así que echa un vistazo a este script .
otro enfoque:
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;
}
var a = addCommas(10000.00);
alert(a);
Otro plugin increíble: http://www.teamdf.com/web/jquery-number-format/178/
function delimitNumbers(str) {
return (str + "").replace(//b(/d+)((/./d+)*)/b/g, function(a, b, c) {
return (b.charAt(0) > 0 && !(c || ".").lastIndexOf(".") ? b.replace(/(/d)(?=(/d{3})+$)/g, "$1,") : b) + c;
});
}
alert(delimitNumbers(1234567890));
Number(10000).toLocaleString(''en''); // "10,000"