• a

  •  

    Julio 2008
    L M X J V S D
    « Jun   Ago »
     123456
    78910111213
    14151617181920
    21222324252627
    28293031  
  • Nube de Categoria

Javascript: Como formatear un numero con separador de miles

Este es un buen ejemplo de uso de expresiones regulares para formatear un numero con Javascript.

La idea es escribir en una caja de texto, por ejemplo:

123456789

y que automaticamente, aparezcan los separadores de miles quedando un resultado como el sgte:

123.456.789

A continuacion el codigo completo de la pagina y la funcion javascript:

La funcion JS es la sgte:

function format(input)
{
var num = input.value.replace(/\./g,”);
if(!isNaN(num)){
num = num.toString().split(”).reverse().join(”).replace(/(?=\d*\.?)(\d{3})/g,’$1.’);
num = num.split(”).reverse().join(”).replace(/^[\.]/,”);
input.value = num;
}

else{ alert(‘Solo se permiten numeros’);
input.value = input.value.replace(/[^\d\.]*/g,”);
}
}

Y ponemos una caja de texto en un formulario con el sgte. codigo:

<form>
<input type=”text” onkeyup=”format(this)” onchange=”format(this)”>
</form>

La funcion que formatea, se lamara por cada caracter numerico que se escriba y asi facilitar l aentrada de datos.

Finalmente, el codigo completo de la pagina:

<html>
<title>Formatear Numero</title>
<head>
<script type=”text/javascript”>
function format(input)
{
var num = input.value.replace(/\./g,”);
if(!isNaN(num)){
num = num.toString().split(”).reverse().join(”).replace(/(?=\d*\.?)(\d{3})/g,’$1.’);
num = num.split(”).reverse().join(”).replace(/^[\.]/,”);
input.value = num;
}

else{ alert(‘Solo se permiten numeros’);
input.value = input.value.replace(/[^\d\.]*/g,”);
}
}
</script>
</head>

<body>
<form>
<input type=”text” onkeyup=”format(this)” onchange=”format(this)”>
</form>

</body>
</html>

7 comentarios

  1. Me fue de gran ayuda! GRACIAS!

  2. No se porque no me funciona el codigo de la pagina, lo copie y pegue y no me funciono en ie6 ni firefox :S

  3. NO FUNCIONA :(

  4. Hola!!! mil gracias por los datos y el código, funcia muy bien ;)

    Alfredo, lo que hay que cambiar en el codigo son los caracteres que se ven como acentos, hay que sustituirlos por comillas dobles (“”) saludos!!!

  5. Hola, el codigo no me funciona, podrías ser mas especifíca Belem en donde cambiar las comillas dobles.
    Porque cuando cambio las comillas en:

    var num = input.value.replace(/\./g,”);

    Se me desactiva el if que sigue y no funciona, si cambio todas las comillas no funciona, si cambio las comillas dobles y solas, no funciona.
    Y si no cambio nada, no funciona.

  6. Amigo este post m salvo, llevaba horas buscano algo asi y es refacisl

    hice el cambio y no hubo problemas

    aca el codigo correjido

    function Moneda(input){
    var num = input.value.replace(/\./g,”");
    if(!isNaN(num)){
    num = num.toString().split(“”).reverse().join(“”).replace(/(?=\d*\.?)(\d{3})/g,”$1.”);
    num = num.split(“”).reverse().join(“”).replace(/^[\.]/,”");
    input.value = num;
    }else{
    input.value = input.value.replace(/[^\d\.]*/g,”");
    }
    }

    y asi lo llaman

    • Esta excelente el script, sobre todo porque no tengo ni idea de JS :) , sabran de alguno que separe miles con comas y decimales con puntos?

      Saludos y muchas gracias!

Escribe un comentario