Focus.

14 views
Skip to first unread message

Alejandro Briuschi

unread,
Mar 21, 2011, 6:33:14 AM3/21/11
to php...@googlegroups.com
Hola, Buen día. Necesito su ayuda!!
Tengo un formulario dinamico que necesito cargarlo utilizando solamente el teclado numerico.
Hasta acá todo bien. Ya tengo todo diseñado y en IE anda perfecto.
Ahora bien, en FF, cuando paso el foco desde un combo a otro combo, este último queda con el foco, pero no se puede realizar ninguna acción en el, ya que si movés las flechitas del teclado o apretas algo es como si tuvieras el foco en la pantalla. Presiono la tecla tab y el foco pasa al campo siguiente, como que efectivamente el foco estaba en el combo...

Alguna sugerencia?

P/D:Todo esta programado en PHP y con JAvascript muevo el foco al detectar que la tecla presionada es el enter...

Pablo Martelletti

unread,
Mar 21, 2011, 7:53:34 AM3/21/11
to php...@googlegroups.com, Alejandro Briuschi
Modificando los tabindex de cada elemento, de forma de que sean
correlativos, no te anda?

El día 21 de marzo de 2011 07:33, Alejandro Briuschi
<alejand...@gmail.com> escribió:

> --
> Has recibido este mensaje porque estás suscrito al grupo "Grupo PHP
> Argentina" de Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a
> php...@googlegroups.com.
> Para anular tu suscripción a este grupo, envía un correo electrónico a
> php-arg+u...@googlegroups.com
> Para tener acceso a más opciones, visita el grupo en
> http://groups.google.com/group/php-arg?hl=es.
>

--
Pablo María Martelletti

Alejandro Briuschi

unread,
Mar 21, 2011, 8:31:00 AM3/21/11
to php...@googlegroups.com
No... me pasa lo mismo...
como que el foco sigue quedando en la pagina... puede ser que sea un bug's de FF?

Silvio

unread,
Mar 22, 2011, 8:06:16 AM3/22/11
to Grupo PHP Argentina


On 21 mar, 09:31, Alejandro Briuschi <alejandro.br...@gmail.com>
wrote:
> No... me pasa lo mismo...
> como que el foco sigue quedando en la pagina... puede ser que sea un bug's
> de FF?
>


Apuesto a que es un error de javascript. Instalate el Firebug en
Firefox y verificá que no haya errores. Si te sigue dando problemas,
pegá el código JS a ver si alguien puede ver algo.
Silvio

Alejandro Briuschi

unread,
Mar 22, 2011, 12:21:23 PM3/22/11
to php...@googlegroups.com
Ejecuto dos funciones en javascript.
La primera:

function getKeyCode(e){
e= (window.event)? event : e;
intKey = (e.keyCode)? e.keyCode: e.charCode;
return intKey;
}

Y la segunda:

function setfocus() {
        document.frm_multiple.CodProMan.focus();
        return;
}

Y ambas la ejecuto asi:
onkeypress='javascript:if (getKeyCode(event)==13) setFocus();'

Eso debería cambiar el foco de un combo a otro cuando presiono enter. Pero, en apariencia el foco se mueve y no sobre el segundo combo ya que si muevo las flechitas se mueve la pagina. Pero si aprieto el TAB corre al campo siguiente... como si el foco quedara en el combo que debe estar.... Muy raro...


--

Adrian Ramiro

unread,
Mar 22, 2011, 12:23:55 PM3/22/11
to php...@googlegroups.com
Est�s usando alg�n framework como jQuery o Prototype? Se minimizan los
problemas de que en un browser ande algo y en otro no, como te ocurre

On 22/03/2011 9:06, Silvio wrote:
>
> On 21 mar, 09:31, Alejandro Briuschi<alejandro.br...@gmail.com>
> wrote:
>> No... me pasa lo mismo...
>> como que el foco sigue quedando en la pagina... puede ser que sea un bug's
>> de FF?
>>
>
> Apuesto a que es un error de javascript. Instalate el Firebug en

> Firefox y verific� que no haya errores. Si te sigue dando problemas,
> peg� el c�digo JS a ver si alguien puede ver algo.
> Silvio
>

Alejandro Briuschi

unread,
Mar 22, 2011, 1:59:43 PM3/22/11
to php...@googlegroups.com
No. No uso nada. Todo lo programo yo. Que me recomendas que haga?

El 22 de marzo de 2011 13:23, Adrian Ramiro <adri...@gmail.com> escribió:
Estás usando algún framework como jQuery o Prototype? Se minimizan los problemas de que en un browser ande algo y en otro no, como te ocurre


On 22/03/2011 9:06, Silvio wrote:

On 21 mar, 09:31, Alejandro Briuschi<alejandro.br...@gmail.com>
wrote:
No... me pasa lo mismo...
como que el foco sigue quedando en la pagina... puede ser que sea un bug's
de FF?


Apuesto a que es un error de javascript. Instalate el Firebug en
Firefox y verificá que no haya errores. Si te sigue dando problemas,
pegá el código JS a ver si alguien puede ver algo.
Silvio


Pablo Martelletti

unread,
Mar 22, 2011, 2:20:40 PM3/22/11
to php...@googlegroups.com, Alejandro Briuschi
Yo recomendaría usar jQuery. Los selectores son muy similares (creo
que incluso iguales) a los de CSS, y las funciones muy fáciles de
memorizar. Y la cantidad de plugins que hay es impresionante. Creo que
tendrias que, al menos, probarlo a ver qué te sale con eso.

El día 22 de marzo de 2011 14:59, Alejandro Briuschi
<alejand...@gmail.com> escribió:

--
Pablo María Martelletti

david

unread,
Mar 22, 2011, 2:50:46 PM3/22/11
to php...@googlegroups.com
Lo que necesitaria para ayudarte es el codigo html y javascript,
posiblemente estes usando alguna caracterisitica de javascript que solo
esta disponible en ie y si no es el caso me gustaria ver semejante
comportamiento, seria para tenerlo en cuenta.

Alejandro Briuschi

unread,
Mar 22, 2011, 3:03:51 PM3/22/11
to php...@googlegroups.com
Bueno les cuento que intente meter jquery pero sin exito. El mismo comportamiento.
La cosa es asi. Tengo un formulario Comun, hecho en html y con codigo javascript paso de campo en campo presionando la tecla enter.
En los mail anteriores puse las 2 funciones que utilizo. Lo raro es que en IE funciona correctamente ya sea con jquery o como lo tenia anteriormente.
Estoy completamente desconcertado...

david

unread,
Mar 22, 2011, 3:27:01 PM3/22/11
to php...@googlegroups.com
Na, jquery no es la solucion, es posible programar con javascript llano.

Fijate en este codigo y decime si es algo asi lo que queres lograr...

<html>
<head>
<script language="javascript" type="text/javascript" >

function getKeyCode(e){
e= (window.event)? event : e;

var intKey = (e.keyCode)? e.keyCode: e.charCode;
return intKey;
}

function setFocus(id) {
document.getElementById(id).focus();
}
</script>
</head>

<body onload="setFocus('CodProMan1')" >
<form name="frm_multiple" id="frm_multiple" action=""
method="post" >

<select onkeypress="javascript:if (getKeyCode(event)==13)
setFocus('CodProMan2');" name="CodProMan1" id="CodProMan1" >
<option>option 1</option>
<option>option 2</option>
<option>option 3</option>
<option>option 4</option>
</select>

<select onkeypress="javascript:if (getKeyCode(event)==13)
setFocus('CodProMan3');" name="CodProMan2" id="CodProMan2" >
<option>option 1</option>
<option>option 2</option>
<option>option 3</option>
<option>option 4</option>
</select>

<select name="CodProMan3" id="CodProMan3" >
<option>option 1</option>
<option>option 2</option>
<option>option 3</option>
<option>option 4</option>
</select>
</form>
</body>
</html>

Alejandro Briuschi

unread,
Mar 22, 2011, 3:38:50 PM3/22/11
to php...@googlegroups.com
Correcto. Basicamente es lo que estoy haciendo. El problema es que cuando paso de un combo al otro en apariencia el foco queda en el combo. Pero si precionas las flechitas(del teclado) para cambiar el valor del combo se mueve la pagina. Como si el foco quedaría en la pagína.
IGualmente si presionas tab se mueve el foco desde el combo a un text que tengo luego...
Una locura.
Sera firefox?

david

unread,
Mar 22, 2011, 3:44:50 PM3/22/11
to php...@googlegroups.com
A mi me funciona perfecto, incluso le agregue br's para que la pagina
tenga un scroll, pero aun asi cuando pasa de un combo a otro y uso las
flechas cambia el option seleccionado y no se mueve el scroll.

Ricardo Luis Mender

unread,
Mar 22, 2011, 4:10:10 PM3/22/11
to php...@googlegroups.com, Alejandro Briuschi
Gente hace mucho que no toco javascript puro (para volver a hacerlo debería hacerlo con cuchillo en la boca), y se puede hacer muchísimo con jQuery (mas de lo que se imaginan), que simplifica mucho a la hora de programar. Sé que no ayuda al problema en concreto pero sí a evitar futuros problemas, como los de compatibilidad.

Saludos
Ricardo Luis Mender

david

unread,
Mar 22, 2011, 4:24:02 PM3/22/11
to php...@googlegroups.com
Yo uso frameworks siempre, pero me parece que si uno quiere aprender lo
mejor es estar canchero usando javascript llano antes de usar
frameworks, si no, se puede hacer codigo muy pedorro con frameworks
(sobre todo en proyectos grandes que tengan mucho javascript).
Ademas por como va la cosa con Node.js la gente que sepa usar javascript
(de verdad) se le van a abrir mas oportunidades de trabajo.

Mas alla de eso, Alejandro, probe ese codigo que te pase en firefox de
linux y de windows y me funco perfecto, no sabria que mas agregar,
fijate en tu codigo si no hay un error!

> +unsub...@googlegroups.com


> > Para tener acceso a más opciones, visita el
> grupo en
> >
> http://groups.google.com/group/php-arg?hl=es.
> >
> >
> >
> >
> >
>
> > --
>
> > Has recibido este mensaje porque estás suscrito al
> grupo "Grupo PHP
> > Argentina" de Grupos de Google.
> > Para publicar una entrada en este grupo, envía un
> correo electrónico a
> > php...@googlegroups.com.
> > Para anular tu suscripción a este grupo, envía un
> correo electrónico a
> > php-arg+u...@googlegroups.com
> > Para tener acceso a más opciones, visita el grupo en
> > http://groups.google.com/group/php-arg?hl=es.
>
>
> --
> Has recibido este mensaje porque estás suscrito al
> grupo "Grupo PHP Argentina" de Grupos de Google.
> Para publicar una entrada en este grupo, envía un
> correo electrónico a php...@googlegroups.com.
> Para anular tu suscripción a este grupo, envía un
> correo electrónico a php-arg

> +unsub...@googlegroups.com

Alejandro Briuschi

unread,
Mar 22, 2011, 4:32:34 PM3/22/11
to php...@googlegroups.com
Ok. Lo voy a revisar...
Si encuentro algo raro les comento. Pero me parece muy raro. Además de que el Firebug no reporta error.
En si, error no hay, a mi parecer, ya que el foco pasa al combo, pero el control no queda en el objeto sino en la pagina...
raro raro...

Federico

unread,
Mar 22, 2011, 4:47:34 PM3/22/11
to php...@googlegroups.com

Guido

unread,
Mar 22, 2011, 5:21:52 PM3/22/11
to Grupo PHP Argentina
Fijate este tutorial que explica como hacer para que el Enter se
comporte como TAB en un formulario, usando Javascript y jQuery...

http://www.cristalab.com/tutoriales/convertir-un-enter-en-un-tab-con-javascript-y-jquery-c89132l/

Creo que está solo para campos imput, pero lo podes adaptar fácil a
combos...

Alejandro Briuschi

unread,
Mar 22, 2011, 8:02:52 PM3/22/11
to php...@googlegroups.com
Ok Perfecto. Muchas Gracias por la ayuda.
Intento y despues les comento!


--

Silvio

unread,
Mar 23, 2011, 8:42:28 AM3/23/11
to Grupo PHP Argentina


On 22 mar, 16:38, Alejandro Briuschi <alejandro.br...@gmail.com>
wrote:
> Correcto. Basicamente es lo que estoy haciendo. El problema es que cuando
> paso de un combo al otro en apariencia el foco queda en el combo. Pero si
> precionas las flechitas(del teclado) para cambiar el valor del combo se
> mueve la pagina. Como si el foco quedaría en la pagína.
> IGualmente si presionas tab se mueve el foco desde el combo a un text que
> tengo luego...
> Una locura.
> Sera firefox?

Debe ser TU firefox. El código de David funciona perfecto. Fijate que
en el tuyo no accedés al combo por ID y usás setfocus en vez de
setFocus.

Silvio

Alejandro Briuschi

unread,
Mar 23, 2011, 1:06:08 PM3/23/11
to php...@googlegroups.com
Hola Gente. He descubierto el motivo por el cual me generaba este problema. Paso a contarles:
Mi formulario es así:
Text
Combo1
Combo2
Text2    Combo3

Cuando le doy enter al text1 paso el foco al combo1. Hasta acá perfecto. Cuando selecciono algo en el combo1, mediante ajax, reescribo el combo2. Estimo que este es el problema. La modificación la hago mediante el evento OnChange en el combo1, FF entiende este evento diferente a IE. Cuando le doy enter en IE el foco pasa perfectamente al combo2 ya que el onchange lo genera al combo2 antes de presionar la tecla. En FF se genera el combo2 cuando se confima la seleccion. Esto pasa cuando presiono enter. En este momento se esta reescribiendo este combo, por lo que en la pagina no existe.
Para solucionarlo utilicé la siguiente funcion:

setTimeout("document.frm_multiple.producto.focus();",200);

Entonces le doy foco luego de unos milisegundos permitiendo que se reescriba el combo2 antes de pasarle el foco.
Muchisimas gracias por su ayuda!


--

Pablo Martelletti

unread,
Mar 23, 2011, 1:15:49 PM3/23/11
to php...@googlegroups.com, Alejandro Briuschi
Otra cosa que podrias hacer es, en vez de un timeout (nunca sabes
cuánto puede tardar la respuesta del servidor), es que una vez que
finalize la petición, setear el foco en el elemento.

Si utilizas jquery, esto es muy sencillo:

1) Escuchas el evento que dispara el evento $ajax al terminar
2) Seleccionas el combo 2

Seria algo asi:

$("#combo2").ajaxComplete(function(){
$(this).focus();
});

Esto, claro, si es la única peticion via Ajax que tenes. Sino,
tendrías que, o bien lanzar un evento propio y agregarle un bind al
combo2, o bien verificar que los parametros del ajaxComplete
concuerden con los que querés.

Saludos!

El día 23 de marzo de 2011 14:06, Alejandro Briuschi
<alejand...@gmail.com> escribió:

--
Pablo María Martelletti

Reply all
Reply to author
Forward
0 new messages