Ver Mensaje Individual
  #46 (permalink)  
Antiguo 08/12/2002, 18:31
Avatar de Kaopectate
Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 24 años, 9 meses
Puntos: 38
46.- Entrada de datos númericos con formato

P: ¿Como puedo presentar un número con formato de separador de decimales y de miles a medida que va siendo transcrito en un campo de texto?

Créditos: Este script me llegó en una pregunta ya desaparecida. Si alguien tiene información del autor, por favor hágamelo saber para colocar los créditos correspondientes.

R: [ver ejemplo]
Código PHP:
<html>
 <
head>
  <
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;
   }
  
</script>
 </head>
 <body>
  <form>
   Tipee un número: 
   <input type="text" name="test" length="15" onKeyPress="return(currencyFormat(this,',','.',event))">
  </form>
 </body>
</html> 

Última edición por Kaopectate; 24/12/2002 a las 09:55