Foros del Web » Programando para Internet » Javascript »

control con foco

Estas en el tema de control con foco en el foro de Javascript en Foros del Web. buenas me gustaría saber cómo preguntar por el control que tiene el foco en ese momento en la página...
  #1 (permalink)  
Antiguo 17/02/2004, 15:55
Avatar de sindestino  
Fecha de Ingreso: noviembre-2003
Ubicación: xxxx xxxx
Mensajes: 270
Antigüedad: 20 años, 6 meses
Puntos: 0
control con foco

buenas me gustaría saber cómo preguntar por el control que tiene el foco en ese momento en la página
  #2 (permalink)  
Antiguo 17/02/2004, 19:24
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Un pequeño truco podría ser que tuvieras en el formulario un campo oculto que contuviera el nombre del campo que tiene el foco. De esta forma sólo tendrías que recurrir a él cuando quisieras saber quién tiene el foco.

Luego si quieres hacer algo en el campo que tenga el foco sólo tendrías que usar el eval así:

formulario=document.forms[0];
tieneElFoco=eval("document.forms[0]."+formulario.foco.value);

y ya si quisieras, por ejemplo cambiar el valor de dicho campo sólo tendrías que poner:

tieneElFoco.value="pepito";

Te he puesto un pequeño ejemplo con el campo del foco no oculto para que veas como cambia. Espero que te ayude!

<html>
<head>
<title>Untitled</title>

<style>
*{font=normal 10px/10px verdana;
color:black;}
input{position:absolute;
left:100px;}
</style>
</head>
<body>
<form>
Tiene el foco: <input
type="input"
readonly=readonly
name="foco" />
<br />
<br />
Pepe: <input
onfocus="this.form.foco.value=this.name;"
type="text"
name="pepe" />
<br />
<br />
Pepe1: <input
onfocus="this.form.foco.value=this.name;"
type="text"
name="pepe1" />
<br />
<br />
Pepe2: <input
onfocus="this.form.foco.value=this.name;"
type="text"
name="pepe2" />
<br />
<br />
Pepe3: <input
onfocus="this.form.foco.value=this.name;"
type="text"
name="pepe3" />
</form>


</body>
</html>
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #3 (permalink)  
Antiguo 18/02/2004, 18:11
Avatar de sindestino  
Fecha de Ingreso: noviembre-2003
Ubicación: xxxx xxxx
Mensajes: 270
Antigüedad: 20 años, 6 meses
Puntos: 0
karlankas gracias por responder. Yo buscaba, más bien, alguna propiedad de window o de document que me devolviera el control (algo como activeControl o algo así). Me parece que no siempre se puede pretender solucionar todo con una sola línea de código

Éste interrogante me surgió queriendo deducir a dónde se iba el foco cuando presiono tab ya que en una página que estoy haciendo no sigue la lógica y "lo pierdo". Al no saber que elemento es no puedo llenar un hidden en el onfocus/onblur, o sea, ¿en el evento de qué control?

Supongo que me las voy a tener que arreglar de otra forma.

Igualmente te agradezco mucho tu ayuda
  #4 (permalink)  
Antiguo 18/02/2004, 20:41
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Pero para eso no te hace falta JS. Con HTML lo puedes hacer. Con la propiedad tabindex de los inputs puedes hacerlo.

Mira este pequeño ejemplo. Pone sobre el primero y dale al tabulador. Como verás va siguiendo el orden que le marques:

<input tabindex="1" type="Text"><br>
<input tabindex="3" type="Text"><br>
<input tabindex="2" type="Text"><br>

__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #5 (permalink)  
Antiguo 18/02/2004, 22:21
Avatar de sindestino  
Fecha de Ingreso: noviembre-2003
Ubicación: xxxx xxxx
Mensajes: 270
Antigüedad: 20 años, 6 meses
Puntos: 0
Justamente con el tabIndex me estoy peleando, el tema es que en mi página no parece funcionar como yo desearía (es que tengo muchas tablas dentro de tablas, hiddens e inputs con ancho = 1 (escondidos) y si bien les asigno el tabIndex, no me termina de quedar bien la cosa y en un punto el foco no va a donde debería. Voy a ver mañana a ver que pasa.

Gracias nuevamente
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 15:46.