Ver Mensaje Individual
  #3 (permalink)  
Antiguo 22/07/2007, 19:55
caberto
 
Fecha de Ingreso: abril-2007
Mensajes: 81
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: funcion que simule la tecla tab

derkenuke .... te explico lo que me pasa
estoy usando esta rutina que tome prestada de este foro
se llama "currencyFormat"

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>Rutina para sumar Numeros</title>
<
script languaje "Javascript">
function 
formato_PC(nsepMilsepDec) {debugger;
if(
sepMil == "."){
    return 
Numbern.replace(/./g,"").replace(/,/g,sepMil) );
    var 
numero Number.value}
else{
    return 
Numbern.replace(/./g,sepDec).replace(/,/g,"") );
    var 
numero Number.value}

function 
formato_HUM(nsepMilsepDecDecimales) {
       
n=n.toFixed(2);//el 2 equivale a la cantidad de decimales que se desee
    
n=String(n).split(".");         
    
n[0]=n[0].split("").reverse().join("");    
        if(
sepMil == "."){ 
               
n[0]=n[0].replace(/(d{3})(?=d)/g,"$1" sepMil); 
        }else{
            
n[0]=n[0].replace(/(d{3})(?=d)/g,"$1" sepDec); 
        }
        
n[0]=n[0].split("").reverse().join("");        
        if(
sepMil == "."){
               return 
n.join(",");}
        else{
            
n[0]=n[0].replace(/./g,",");
        return 
n.join(".");}         
        } 
//cuando se realizen los cambios de separadores deben tener el mismo orden 
function suma(arr) { 
    var 
total=0
    for(var 
r=0;r<arr.length;r++) 
        
total+=formato_PC(arr[r],document.formulario.Sep_1.value,document.formulario.Sep_2.value); //cambiar aqui el orden de los separadores 
    
return formato_HUM(total,document.formulario.Sep_1.value,document.formulario.Sep_2.value,2); //cambiar aqui el orden de los separadores
}  

function 
sumaTodos() {
  
    var 
arr=new Array(); 
    for(var 
a=1a<=4a++) { 
        
arr[arr.length]=document.getElementById("caja"+a).value;//en "caja"+a va el nombre del los campos a sumar
    
}
    
document.getElementById("resultado").value=suma(arr); // "Resultado" es el campo a colocar el resultado de la suma

function 
currencyFormat(fldmilSepdecSepe) {debugger;
    var 
sep 0//variable
    
var key ''//variable
    
var 0//variable
    
var len len2 0//variable
    
var strCheck '0123456789'//variable
    
var aux aux2 ''//variable
    
var whichCode = (window.Event) ? e.which e.keyCode//variable
    
if (whichCode == 13) return true//Condicional 
    
key String.fromCharCode(whichCode);  
    if (
strCheck.indexOf(key) == -1) return false;  //Condicional 
    
len fld.value.length
    for(
0leni++) //
     
if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break; //Condicional 
    
aux ''
    for(; 
leni++) 
     if (
strCheck.indexOf(fld.value.charAt(i))!=-1aux += fld.value.charAt(i); //Condicional 
    
aux += key
    
len aux.length
    if (
len == 0fld.value ''//Condicional 
    
if (len == 1fld.value '0'decSep '0' aux//Condicional 
    
if (len == 2fld.value '0'decSep aux//Condicional 
    
if (len 2) { //Condicional 
     
aux2 ''
     for (
0len 3>= 0i--) { 
      if (
== 3) { //Condicional 
       
aux2 += milSep
       
0
      } 
      
aux2 += aux.charAt(i); 
      
j++; 
     } 
     
fld.value ''
     
len2 aux2.length
     for (
len2 1>= 0i--) 
      
fld.value += aux2.charAt(i); 
     
fld.value += decSep aux.substr(len 2len);
    }
    return 
false
   } 
      function 
cuenta(){ 
    
document.formulario.Valor.value document.formulario.Sep_1.value
   } 
</script> 
</head> 

<body> 
  <form name="formulario"> 
Sep Miles:<input type ="text" id="Sep_1" size="5" value="," disabled="disabled" />
<br />
Sep Decimales:<input type ="text" id="Sep_2" size="5" value="." disabled="disabled"/>
<br />

Numero<input type="text" id="caja1" size="30" onKeyPress="return(currencyFormat(this,document.formulario.Sep_1.value,document.formulario.Sep_2.value,event))"><br /> 
Numero<input type="text" id="caja2" size="30" onKeyPress="return(currencyFormat(this,document.formulario.Sep_1.value,document.formulario.Sep_2.value,event))"><br /> 
Numero<input type="text" id="caja3" size="30" onKeyPress="return(currencyFormat(this,document.formulario.Sep_1.value,document.formulario.Sep_2.value,event))"><br /> 
Numero<input type="text" id="caja4" size="30" onKeyPress="return(currencyFormat(this,document.formulario.Sep_1.value,document.formulario.Sep_2.value,event))"><br /> 
<input type="button" value="Resultado: " onclick="sumaTodos()" /> <input type="text" id="resultado" size="30"> 
</form>
</body> 
</html> 
la uso para poner separadores de miles y decimales mientras escribo cantidades,
al comenzar la funcion en una variable llamada "whichCode" coloco el keycode de la tecla que he pulsado por lo tanto se si es un numero, si no es un numero la funcion no entra en el proceso de poner los separadores....
el problema es que en netscape(este problema no lo tengo en IE y tampoco en FIREFOX) la tecla TAB e incluso las teclas BACK y INTRO tienen un keycode y la funcion no los toma como numero por lo tanto las invalida, o mejor dicho, no las toma encuenta.

como podria solucionar ese problema por que necesito que funcione la tecla TAB