Ver Mensaje Individual
  #250 (permalink)  
Antiguo 31/01/2007, 19:08
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años
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.