JavaScript - Formatear Numeros Dinamicamente

 
Vista:

Formatear Numeros Dinamicamente

Publicado por Juanma (1 intervención) el 27/04/2005 18:13:53
!Buenas a Todos!

Pues mi consulta es la siguiente, necesito en una Aplicacion Web, que los campos numericos sean formateados numericamente; con sus separadores de miles y todo eso.

Le he estado dando vueltas al asunto e investigando y todo lo que he conseguido es hacerlo (correctamente) cuando le salta el Foco y llama al OnBlur.

Pero en cambio al intentar hacerlo en cada pulsacion de tecla, me termino complicando tanto la vida que no me sale nada coherente....

¿Alguien tiene alguna sugerencia de como hacerlo?. Porque me estoy volviendo loco....

!Un Saludo y Gracias por Todo!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Formatear Numeros Dinamicamente

Publicado por JAcK FiDo (3 intervenciones) el 05/06/2008 00:06:32
Espero te sirva este, lo que hace es que mientras escribes el numero, te lo va formateando

<script language="JavaScript">
function currencyFormat(fld, milSep, decSep, e) {
var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';
var whichCode = (window.Event) ? e.which : e.keyCode;
if (whichCode == 13) return true; // Enter
key = String.fromCharCode(whichCode); // Get key value from key code
if (strCheck.indexOf(key) == -1) return false; // Not a valid key
len = fld.value.length;
for(i = 0; i < len; i++)
if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
aux = '';
for(; i < len; i++)
if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
aux += key;
len = aux.length;
if (len == 0) fld.value = '';
if (len == 1) fld.value = '0'+ decSep + '0' + aux;
if (len == 2) fld.value = '0'+ decSep + aux;
if (len > 2) {
aux2 = '';
for (j = 0, i = len - 3; i >= 0; i--) {
if (j == 3) {
aux2 += milSep;
j = 0;
}
aux2 += aux.charAt(i);
j++;
}
fld.value = '';
len2 = aux2.length;
for (i = len2 - 1; i >= 0; i--)
fld.value += aux2.charAt(i);
fld.value += decSep + aux.substr(len - 2, len);
}
return false;
}


lo llamas desde

<input type=text name=test length=15 onKeyPress="return(currencyFormat(this,',','.',event))" size="20" id="t" onkeyup="pasanum(this,'','',event)"></td>

en el onkeypress

espero te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar