Foros del Web » Programando para Internet » Javascript »

problema con focus y divs visible/hidden

Estas en el tema de problema con focus y divs visible/hidden en el foro de Javascript en Foros del Web. Hola: Tengo un formulario en dos partes, en dos divs, la primera se muestra para ir metiendo datos, y al dar a "seguir", oculta este ...
  #1 (permalink)  
Antiguo 19/04/2005, 10:21
Avatar de ludovico2000  
Fecha de Ingreso: noviembre-2003
Ubicación: Bizkaia
Mensajes: 1.315
Antigüedad: 20 años, 5 meses
Puntos: 2
De acuerdo problema con focus y divs visible/hidden

Hola:

Tengo un formulario en dos partes, en dos divs, la primera se muestra para ir metiendo datos, y al dar a "seguir", oculta este div y muestra el siguiente (que está "encima"). Para ello, utilizo:

function envia1(){
document.getElementById('uno').style.visibility='h idden';
document.getElementById('dos').style.visibility='v isible';
}


Pero mi problema es que el segundo formulario al aparecer está "a la misma altura" que estaba el primero al pulsar "seguir", y aparece a la mitad. He intentado meter una llamada a focus(), pero sólo lo he podido hacer sobre el primer campo, con lo que el título de la segunda parte del formulario aún queda "por encima" de lo visible. Para ello, he usado esto:

function envia1(){
document.getElementById('uno').style.visibility='h idden';
document.getElementById('dos').style.visibility='v isible';
document.formu.empresa1.focus();
}


La pregunta es:

¿Cómo puedo hacer que el focus vaya a la parte alta de la página?

(He probado insertando un marcador en el título <a name='top'> y llamándolo luego en la función document.getElementById('top').focus(); y nada, y tampoco document.formu.top.focus();)

gracias

Última edición por ludovico2000; 20/04/2005 a las 10:21
  #2 (permalink)  
Antiguo 19/04/2005, 10:54
 
Fecha de Ingreso: mayo-2003
Mensajes: 328
Antigüedad: 21 años
Puntos: 0
Hola:

Me parece que tu problema lo solucionas poniendo la misma posición absoluta a los dos DIVs, de otra manera aunque algún DIV esta oculto de igual manera toman su lugar a como si estuvieran visibles. Pero con posiciones absolutas los obligas a estar en la misma posición.

SALUDOS
__________________
Uriel Lizama, Perl Developer

Aprende Perl en Perl en Español.
  #3 (permalink)  
Antiguo 19/04/2005, 11:15
Avatar de ludovico2000  
Fecha de Ingreso: noviembre-2003
Ubicación: Bizkaia
Mensajes: 1.315
Antigüedad: 20 años, 5 meses
Puntos: 2
Igual no me he explicado bien:

Los dos divs están "bien situados" (si fueran los dos visibles, se verían uno sobre otro, tapándose uno al otro, a la misma altura).

Lo que ocurre es que el primero requiere de bajar la página con el scroll, y al darle al botón, aparece el segundo pero como el scroll ha sido desplazado, se ve a la mitad. Lo que necesito es cómo hacer para que al pulsar el botón, además de cambiarse visible/hidden, el foco se sitúe en la parte alta del segundo div (que es el que se vuelve visible).
  #4 (permalink)  
Antiguo 19/04/2005, 11:28
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 ludovico2000

Puedes usar la solución que ha dado kidd en otro mensaje: window.scrollBy(0,200)

Otra cosa que podrías hacer es, en lugar de usar la propiedad visibility, usar display (block/none) Así el div que se ve siempre estará en la parte de arriba.

saludos,
  #5 (permalink)  
Antiguo 20/04/2005, 09:06
Avatar de ludovico2000  
Fecha de Ingreso: noviembre-2003
Ubicación: Bizkaia
Mensajes: 1.315
Antigüedad: 20 años, 5 meses
Puntos: 2
Solucionado con:

function envia1(){
document.getElementById('uno').style.visibility='h idden';
document.getElementById('dos').style.visibility='v isible';
scroll(0,0);
}


-Gracias por la colaboración-

Por cierto, con display none/block no me ha funcinado, ni con window.scrollby...

Gracias again a todos

Última edición por ludovico2000; 20/04/2005 a las 10:23 Razón: ¡¡¡SOLUCIONADO!!!
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




La zona horaria es GMT -6. Ahora son las 19:24.