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>
Archivado bajo: Javascript | Etiquetado: Javascript, Separador
Me fue de gran ayuda! GRACIAS!
No se porque no me funciona el codigo de la pagina, lo copie y pegue y no me funciono en ie6 ni firefox :S
NO FUNCIONA
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!!!
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.
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!