Foros del Web » Programando para Internet » Javascript »

"Error: No se puede mover el foco hacia el control porque el control es invisible, no

Estas en el tema de "Error: No se puede mover el foco hacia el control porque el control es invisible, no en el foro de Javascript en Foros del Web. Hola a todos Tengo un inconveniente con una función q tengo donde se mueve el foco por los campos de un form al presionar "enter" ...
  #1 (permalink)  
Antiguo 24/07/2008, 13:27
 
Fecha de Ingreso: mayo-2007
Mensajes: 23
Antigüedad: 17 años
Puntos: 0
"Error: No se puede mover el foco hacia el control porque el control es invisible, no

Hola a todos

Tengo un inconveniente con una función q tengo donde se mueve el foco por los campos de un form al presionar "enter" según el orden del tabindex.

Resulta q en mi form tengo unos bloques que se ocultan y aparecen segun una opciones marcadas, esto funciona muy bn, al posicionarme sobre una opción me aparecen otras, como decir unos subgrupos del grupo marcado, y si me muevo con la tecla tab el foco opera correctamente, pero al hacerlo con la tecla enter y usando la función, me muestra este error: "Error: No se puede mover el foco hacia el control porque el control es invisible, no esta habilitado o es de un tipo que no acepta al foco"

El bloque lo oculto con <div> y no se como validar q esta oculto o no.

La función q uso es la siguiente:

function Enter(Evento, Campo)
{
var keyCode = Evento.keyCode ? Evento.keyCode : Evento.which ? Evento.which : Evento.charCode;
if (keyCode == 13)
{
var i;
for (i = 0; i < Campo.form.elements.length; i++)
if (Campo == Campo.form.elements[i])
break;
i = Campo.form.elements[i].tabIndex + 1;
for( j = 0 ; j < Campo.form.elements.length; j++)
{
if( Campo.form.elements[j].tabIndex == i)
{
break;
}
}
Campo.form.elements[j].focus();
return false;
}
else
return true;
}

Espero q alguien me pueda colaborar y de antemano les agradezco.
  #2 (permalink)  
Antiguo 24/07/2008, 21:11
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 16 años
Puntos: 11
Respuesta: "Error: No se puede mover el foco hacia el control porque el control es in

Hola Krucom
Pruebalo asi y dime:
Código HTML:
function Enter(Evento, Campo)
{
    var keyCode = Evento.keyCode ? Evento.keyCode : Evento.which ? Evento.which : Evento.charCode;
    if (keyCode == 13)
    {
        var i;
        for (i = 0; i < Campo.form.elements.length; i++)
            if (Campo == Campo.form.elements[i])
            break;
        i = Campo.form.elements[i].tabIndex + 1;
        for( j = 0 ; j < Campo.form.elements.length; j++)
        {
            if( Campo.form.elements[j].tabIndex == i)
            {
            break;
            }
        }
        if(!(Campo.form.elements[j].style.display == "none" || Campo.form.elements[j].style.visibility == "hidden"))
        {
            Campo.form.elements[j].focus();
            return false;
        }
        else
        {
            return true;
        }
    }
    else
    return true;
}
Saludos!
  #3 (permalink)  
Antiguo 25/07/2008, 08:40
 
Fecha de Ingreso: mayo-2007
Mensajes: 23
Antigüedad: 17 años
Puntos: 0
Respuesta: "Error: No se puede mover el foco hacia el control porque el control es in

Gracias xbx, x contestar tan rápido, pero te cuento q no me funciona así.

El asunto es q el bloq q se oculta esta en un div y la propiedad style="none" no es de un campo u elemento del form, entonces x eso no puedo usar la comparación con elements[j].

Intenté pasando x parametros el id del div xa hacer la comparación pero no se xq no reconoce el valor.

Por otro lado, segun unas pruebas q hice el error esta en asignar al bloq la propiedad style, ya q el valor de esta propiedad lo cambio al hacer click sobre una opción y efectivamente oculta el q mostraba y deja ver el q necesito, eso es lo q necesito, pero al dar enter asume como si estuviera oculto, hice la prueba colocando uno de los bloques con la propiedad style igual a "" para q lo muestre y permite pasar sin problemas con enter, pero al momento de cambiar la opción para q muestre un bloq oculto y dar enter genera el error.

No se si fui claro, pero en conclusión pareciera q la función enter solo asumiera el estado de oculto o no al cargar la pag y no al hacer el cambio con las opciones indicadas.

Agradezco cualquier otra sugerencia.
  #4 (permalink)  
Antiguo 25/07/2008, 12:11
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 16 años
Puntos: 11
Respuesta: "Error: No se puede mover el foco hacia el control porque el control es in

Ah... ahora entiendo.
Para evitar que el error que ocurre interrumpa la ejecución de tu script, haz esto:
Reemplaza Campo.form.elements[j].focus(); por:

Código:
try
{
 Campo.form.elements[j].focus(); 
}
Tu necesitas que si en ese elemento oculto no se puede colocar el focus entonces se coloque en otro elemento?
  #5 (permalink)  
Antiguo 28/07/2008, 08:23
 
Fecha de Ingreso: mayo-2007
Mensajes: 23
Antigüedad: 17 años
Puntos: 0
Respuesta: "Error: No se puede mover el foco hacia el control porque el control es in

De nuevo, muchas gracias Xbx
Si, lo q necesito es eso, q si no se puede colocar el foco en un elemento busq el siguiente posible.
Ya puse el try catch, no conocia esta función, muchas gracias. Con esto evito el mensaje de error, pero será posible q sii se presenta el error al entrar a un foco, busq otro q no muestre error???. Tengo una idea pero es algo dispendiosa, quisiera conocer opciones.
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 13:57.