Foros del Web » Programando para Internet » Javascript »

rutina para saltar campos con enter

Estas en el tema de rutina para saltar campos con enter en el foro de Javascript en Foros del Web. Hola a todos, estoy tratando de hacer una rutina que me sirva para que todas mis paginas que contengan campos de un formulario (text, select, ...
  #1 (permalink)  
Antiguo 01/02/2005, 12:58
 
Fecha de Ingreso: diciembre-2004
Mensajes: 8
Antigüedad: 19 años, 4 meses
Puntos: 0
rutina para saltar campos con enter

Hola a todos, estoy tratando de hacer una rutina que me sirva para que todas mis paginas que contengan campos de un formulario (text, select, checkbox, radio) al agregarle una llamada (sin parametros) en el evento onkeypress, onkeydown onkeyup (cualquiera) pueda tabular de un campo a otro cuando se presiona el enter.
Estuve tratando de hacerlo con window.document.forms[0].elements pero me todavia me falta saber que campo es el que instancia el evento.

Espero que me puedan ayudar.

Gracias
  #2 (permalink)  
Antiguo 01/02/2005, 13:09
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola buyito

¿Te serviría algo así...?
Código PHP:
<html>
<
head>
<
script>
function 
tabular(e,obj) {
  
tecla=(document.all) ? e.keyCode e.which;
  if(
tecla!=13) return;
  
frm=obj.form;
  for(
i=0;i<frm.elements.length;i++) 
    if(
frm.elements[i]==obj) { 
      if (
i==frm.elements.length-1i=-1;
      break }
  
frm.elements[i+1].focus();
  return 
false;
}
</script>
</head>
<body>
<form>
<input type="text" onkeypress="return tabular(event,this)" />
<input type="text" onkeypress="return tabular(event,this)" />
</form>
</body>
</html> 
Saludos,

Última edición por JavierB; 14/03/2005 a las 12:02
  #3 (permalink)  
Antiguo 01/02/2005, 13:30
 
Fecha de Ingreso: diciembre-2004
Mensajes: 8
Antigüedad: 19 años, 4 meses
Puntos: 0
Hola JavierB, Muchisimas gracias, anduvo a la perfeccion.
Me salvaste!!!!

Saludos.
  #4 (permalink)  
Antiguo 01/02/2005, 13:50
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Cita:
Iniciado por buyito
Me salvaste!!!!
Suele pasarnos a los españoles, debe ser por la influencia de Don Quijote Me alegro de que te haya servido
  #5 (permalink)  
Antiguo 29/12/2007, 08:58
 
Fecha de Ingreso: diciembre-2007
Mensajes: 1
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: rutina para saltar campos con enter

Le hice un cambio a tun función javascript ya que falla cuando existen campos desabilitados, aunque aún le falta los campos readonly.
Código PHP:
function tabular(e,obj
        {
            
tecla=(document.all) ? e.keyCode e.which;
            if(
tecla!=13) 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*/
            
if (frm.elements[i+1].disabled ==true )    
                
tabular(e,frm.elements[i+1]);
            else 
frm.elements[i+1].focus();
            return 
false;
        } 
  #6 (permalink)  
Antiguo 07/05/2009, 12:56
Avatar de Trilan  
Fecha de Ingreso: abril-2009
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: Re: rutina para saltar campos con enter

Le agrego la modificacion con el readOnly.
Código PHP:
function tabular(e,obj
        {
            
tecla=(document.all) ? e.keyCode e.which;
            if(
tecla!=13) 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*/
            
if (frm.elements[i+1].disabled ==true )    
                
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 
frm.elements[i+1].focus();
            return 
false;


Saludos
Yours Trilan
  #7 (permalink)  
Antiguo 09/10/2009, 07:23
 
Fecha de Ingreso: octubre-2009
Mensajes: 3
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: rutina para saltar campos con enter

Hola gente linda!!!!!!!!!! Muchas gracias por sus colaboraciones.
Probé la rutina en firefox y en IE 6 y funciona muy bien!!
Saludos mis amigos
  #8 (permalink)  
Antiguo 09/10/2009, 09:53
 
Fecha de Ingreso: octubre-2009
Mensajes: 3
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: rutina para saltar campos con enter

Agregado para los campos hidden (los saltea):
Código PHP:
function tabular(e,obj) {
  
tecla=(document.all) ? e.keyCode e.which;
            if(
tecla!=13) 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 
frm.elements[i+1].focus();
            return 
false

  #9 (permalink)  
Antiguo 09/10/2009, 12:08
 
Fecha de Ingreso: marzo-2009
Mensajes: 7
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: rutina para saltar campos con enter

no me funcionó a la primera porque tenia algunos campos hide pero al asignarles readonly funcionaron a la perfección.

la pregunta es cómo agregarle lineas para que si encuentra un campo hide lo salte también

Saludos!
  #10 (permalink)  
Antiguo 09/10/2009, 14:47
 
Fecha de Ingreso: marzo-2009
Mensajes: 7
Antigüedad: 15 años, 1 mes
Puntos: 0
De acuerdo Respuesta: rutina para saltar campos con enter

Perfecto!.... ahora si funciona perfecto

y si el formulario estuviera lleno y se deseara el efecto completo del Tab solo hay que agregar la siguiente linea y queda

Código PHP:
/*ACA ESTA EL CAMBIO readOnly */
            
else if (frm.elements[i+1].readOnly ==true )    
                
tabular(e,frm.elements[i+1]);
            else {
                
frm.elements[i+1].select();   /* AÑADIR LOS CORCHETES Y ESTA INSTRUCCION */
                
frm.elements[i+1].focus();
            }
            return 
false

Gracias!!!!

Última edición por OAGF; 09/10/2009 a las 14:56
  #11 (permalink)  
Antiguo 29/10/2010, 07:59
 
Fecha de Ingreso: octubre-2009
Mensajes: 48
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: rutina para saltar campos con enter

Algo como esto me estaba buscando y funciono super bien, gracias por compartirlo
  #12 (permalink)  
Antiguo 25/01/2011, 15:53
 
Fecha de Ingreso: noviembre-2010
Mensajes: 48
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: rutina para saltar campos con enter

hola foro, estoy trabajando en un sistema con todas estas tecnologias, soy muy nuevo en esto y esta funcion que esta en el foro mas todas las mejoras realizadas me vinieron muy bien y gracias a todos por esto. Lo unico: cuando tengo un SELECT no me anda bien, no saltea. Uds lo probaron en un caso asi??
  #13 (permalink)  
Antiguo 02/03/2011, 16:34
 
Fecha de Ingreso: marzo-2011
Mensajes: 1
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: rutina para saltar campos con enter

Se agrega una validación para determinar si el campo es text para que no falle al invocar el método select(), para que no falle en los campos que no tienen este método, como los SELECT

Código PHP:
function tabular(e,obj
{
  
tecla=(document.all) ? e.keyCode e.which;
            if(
tecla!=13) 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

  #14 (permalink)  
Antiguo 13/04/2011, 10:00
 
Fecha de Ingreso: abril-2011
Ubicación: caracas
Mensajes: 2
Antigüedad: 13 años
Puntos: 0
Exclamación Respuesta: rutina para saltar campos con enter

Buenas he utilizado el codigo y me a funcionado de maravilla pero el problema es que yo oculto una tabla muy grande con el atributo style=("display:none") y cuando intento pasar se queda trabado en el text anterior al div oculto
  #15 (permalink)  
Antiguo 20/05/2013, 13:49
 
Fecha de Ingreso: abril-2012
Mensajes: 30
Antigüedad: 12 años
Puntos: 0
Respuesta: rutina para saltar campos con enter

Aunque haya pasado el tiempo, siempre se puede ir mejorando.

Quería aportar que para los textarea, funciona perfecto el tabulado con ENTER, pero también te tabula con SHIFT+ENTER. Para que esto no suceda, solamente agregar la siguiente línea.... ya podrán bajar de línea dentro de un textarea y tabular con ENTER

Código:
//tecla=(document.all) ? e.keyCode : e.which;
            if(e.keyCode!=13) return;
            if(e.shiftKey == true) return;
			frm=obj.form;
Saludos!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 3 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 08:44.