Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/10/2018, 15:47
locurafragil
 
Fecha de Ingreso: abril-2012
Mensajes: 30
Antigüedad: 12 años
Puntos: 0
Rutina para saltar con ENTER

Buenos días, vengo a retomar un post que en su momento utilicé y hasta el día de hoy no había tenido ningún problema.

[URL="http://www.forosdelweb.com/f13/rutina-para-saltar-campos-con-enter-266875/"]http://www.forosdelweb.com/f13/rutina-para-saltar-campos-con-enter-266875/
[/URL]
Pero siempre hay algo que hay para mejorar y la verdad ya no encuentro solución.

Cuando utilizo esa rutina para ir saltando de campo en campo con ENTER y no con TAB me pasa que para un input que ya tiene un value predeterminado, el cursor me queda por delante del texto y sin seleccionar, a diferencia del TAB que ya me queda seleccionado el valor.

Código HTML:
<input type="text" name="descripcion" id="descripcion" onkeypress="return tabular(event,this)">
<input name="cantidad" type="number" id="cantidad" onKeyPress="return tabular(event,this)" value="1"  /> 
El problema que tengo es que si vengo tabulando con la función "tabular" (de descripcion a cantidad), cuando hace foco en el input cantidad, me queda el cursor delante del 1, y el usuario si necesita poner cantidad 2 por ejemplo, escribe el 2 y queda 21.... en cambio si vengo tabulando con TAB, queda seleccionado el 1 y si el usuario escribe 2, reemplaza el 1 por el 2...

¿Alguna sugerencia?
Desde ya muchas gracias!!


Dejo la función por las dudas

Código HTML:
function tabular(e,obj)  
{ 
  tecla=(document.all) ? e.keyCode : e.which; 
            if(tecla!=13) return; 
			if(e.shiftKey == true) return;
            frm=obj.form; 
            for(i=0;i<frm.elements.length;i++)  
                if(frm.elements[i]==obj)  
                {  
                    if (i==frm.elements.length-1)  
                        i=-1; 
                    break  
                } 
    /*ACA ESTA EL CAMBIO disabled, Y PARA SALTEAR CAMPOS HIDDEN*/ 
            if ((frm.elements[i+1].disabled ==true) || (frm.elements[i+1].type=='hidden') )     
                tabular(e,frm.elements[i+1]); 
/*ACA ESTA EL CAMBIO readOnly */ 
            else if (frm.elements[i+1].readOnly ==true )     
                tabular(e,frm.elements[i+1]); 
            else { 
                if (frm.elements[i+1].type=='text') /*VALIDA SI EL CAMPO ES TEXTO*/ 
                { frm.elements[i+1].select(); };   /* AÑADIR LOS CORCHETES Y ESTA INSTRUCCION */ 
                frm.elements[i+1].focus(); 
            } 
            return false;  
}