Foros del Web » Programando para Internet » Javascript »

cambiar el foco

Estas en el tema de cambiar el foco en el foro de Javascript en Foros del Web. Wenas: Tengo una página en la q hay un formulario. Es preciso q el foco lo tenga al cargarse la pagina un campo determinado, para ...
  #1 (permalink)  
Antiguo 04/11/2003, 06:12
Avatar de fjmasero  
Fecha de Ingreso: diciembre-2002
Mensajes: 488
Antigüedad: 21 años, 5 meses
Puntos: 1
cambiar el foco

Wenas:

Tengo una página en la q hay un formulario.

Es preciso q el foco lo tenga al cargarse la pagina un campo determinado, para lo cual, se pone <body onLoad="documento.formulario.campo.focus();">.

Hasta aquí todo normal.

Pero también hay una funcionalidad en la que despues de un submit, y si la validación del formulario produce un error, hay q volver a cargar el formulario y seleccionar el campo q genera el error.

Digo volver a cargar la página pq es así, ya que la validación se hace a través de dll en VisualBasic, q devuelve si/no hay errores.

La cuestión es que si en el body hay un onLoad con un focus a un campo del formulario, lo ejecuta, pero si más adelante hay un script con un select() y un focus() a un campo diferente al que hay en el onLoad, no lo hace.

Para probarlo, he hecho un pagina de prueba y lo confirma.
Código:
<html>
 <body onLoad="document.form.dos.focus();">
  <form action="" name="form" id="form">
   uno<input type="text" name="uno"><br>
   dos<input type="text" name="dos">
  </form>
  <script>document.form.uno.focus();</script>
 </body>
</html>
A pesar del script final, el campo que coge el foco es dos.

¿A alguién se le ocurre como solucionarlo?.

Salu2 y gracias
__________________
No es sabio el que sabe sino el que no sabe y quiere aprender

Última edición por fjmasero; 04/11/2003 a las 06:15
  #2 (permalink)  
Antiguo 04/11/2003, 08:11
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Hola fjmasero.

Yo trataría de estandarizar todo al final y no en el onload del body, ya que este evento me produce muchas dudas sobre el momento de su activación.

Es mi opinión.

Saludos.
  #3 (permalink)  
Antiguo 04/11/2003, 09:47
Avatar de fjmasero  
Fecha de Ingreso: diciembre-2002
Mensajes: 488
Antigüedad: 21 años, 5 meses
Puntos: 1
Hola Kaopectate: Gracias por responder.

¿A qué te refieres con estandarizar al final?.

Ten en cuenta que el código que he puesto es una prueba simplona.

Mí código real es muy muy muy complejo, y es preciso que al cargarse la pagina, al menos la 1ª vez, el foco lo coja un campo determinado, pero luego, al volver al cargase, puede que lo tenga ese mismo, u otro, dependiendo de validaciones, etc.

Salu2
__________________
No es sabio el que sabe sino el que no sabe y quiere aprender
  #4 (permalink)  
Antiguo 04/11/2003, 13:16
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Hola de nuevo.

Yo lo que suelo hacer es colocar al final del HTML una llamada a una función JavaScript que ponga el foco donde deba ir. No en el onload del body porque en el onload nunca he podido precisar si se ejecuta o no antes de la carga de todos los elementos de la página.

Lo que te digo de estandarizar es que evites tener en 2 sitios distintos una manipulación del foco (onload del body y final del documento) como lo tienes en tu ejemplo.

Yo trataría de pasarle un parámetro a la página que indique cual elemento debe tener el foco, y si ese parámetro no tiene valor, entonces pongo en foco el primer elemento.

Eso haría.

Saludos.
  #5 (permalink)  
Antiguo 05/11/2003, 03:50
Avatar de fjmasero  
Fecha de Ingreso: diciembre-2002
Mensajes: 488
Antigüedad: 21 años, 5 meses
Puntos: 1
Aaaaaaaaaaaaaaaaah.

Ahora si te he entendido, y tenía pensado algo parecido.

Muchas gracias por tu ayuda.
__________________
No es sabio el que sabe sino el que no sabe y quiere aprender
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 23:58.