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;
}