Tengo estos numeros
10999
y 8094
y456
Y todo lo que quiero hacer es agregar una coma en el lugar correcto si lo necesita para que se vea así
10,999
y 8,094
y456
Estos están todos dentro de una etiqueta 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 puedo hacer que funcione
Gracias
Jamie
ACTUALIZAR
Me equivoqué un poco y logré resolverlo aquí http://jsfiddle.net/W5jwY/1/
Vamos a ver el nuevo complemento de globalización para una mejor manera de hacerlo
Gracias
Jamie
javascript
jquery
formatting
numbers
Jamie Taylor
fuente
fuente
<number string>.replace(/\B(?=(?:\d{3})+(?!\d))/g, ',')
Respuestas:
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; }
Escribí esto para que sea compacto, y al grano, gracias a regex. Este es JS directo, pero puede usarlo en su jQuery así:
$('#elementID').html(commaSeparateNumber(1234567890));
o
$('#inputID').val(commaSeparateNumber(1234567890));
fuente
Number(10000).toLocaleString('en'); // "10,000"
fuente
La respuesta de Timothy Pirez fue muy correcta, pero si necesita reemplazar los números con comas Inmediatamente mientras el usuario escribe en el campo de texto, es posible que desee 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>
fuente
Eche un vistazo al complemento de globalización lanzado recientemente para jQuery por Microsoft
fuente
Eche un vistazo a Numeral.js . Puede formatear números, moneda, porcentajes y tiene soporte para la localización.
fuente
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));
fuente
Supongo que estás haciendo algún tipo de localización, así que echa un vistazo a este script .
fuente
Usando toLocaleString ref en https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
function formatComma(value, sep = 0) { return Number(value).toLocaleString("ja-JP", { style: "currency", currency: "JPY", minimumFractionDigits: sep }); } console.log(formatComma(123456789, 2)); // ¥123,456,789.00 console.log(formatComma(123456789, 0)); // ¥123,456,789 console.log(formatComma(1234, 0)); // ¥1,234
fuente
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 complemento sorprendente: http://www.teamdf.com/web/jquery-number-format/178/
fuente
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));
fuente
Aquí está mi versión coffeescript del violín de @ baacke proporcionada 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
fuente