31/01/2007, 19:08
|
| Colaborador | | Fecha de Ingreso: octubre-2003 Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 1 mes Puntos: 45 | |
Re: FAQs JavaScript P: ¿Cómo formateo "al vuelo" mientras el usuario escribe en su caja de texto? R:
Código:
<script language="Javascript">
String.prototype.reverse=function() { return this.split("").reverse().join(""); }
String.prototype.format=function(sepMil,sepDec) {
var partes=this.split("."); //dividimos parte entera de decimal
return partes[0].reverse().replace( /(\d{3})(?=\d)/g ,"$1"+sepMil).reverse() + (partes[1]?(sepDec + partes[1]):"");
}
String.prototype.desFormat=function(sepMil,sepDec) {
var reMil=new RegExp("\\"+sepMil,"g"); //para localizar los sepMil
var reDec=new RegExp("\\"+sepDec); //para localizar los sepDec
return this.replace(reMil,"").replace(reDec,".").replace(/\s/g,"");
}
//escogemos los separadores que queramos
var SEPMIL=".";
var SEPDEC="'";
document.write("Utiliza un "+SEPDEC+" como separador de decimales.<br/>");
</script>
<input type="text" onkeyup="handler(event,this)" />
<script language="javascript">
function handler(e,caja) {
//obtener la tecla pulsada
var code = (window.Event) ? e.which : e.keyCode;
var tecla = String.fromCharCode(code);
if(caja.value.lastIndexOf(SEPDEC)==caja.value.length-1) //se ha escrito SEPDEC, dejar empezar a escribir decimales
return;
else if( "1234567890".indexOf(tecla)>-1) { //se ha escrito un numero
caja.value=caja.value.desFormat(SEPMIL,SEPDEC).format(SEPMIL,SEPDEC);
return;
}
}
</script>
__________________ - Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes. |