Comunidad de diseño web y desarrollo en internet online

Javascript simular click de tecla TAB

Citar            
MensajeEscrito el 05 Ago 2011 06:37 pm
Buenas!!!

Necesito generar desde Javascript un click de la tecla TAB. La idea es que se ejecute 3 veces.

Alguien me podria ayudar??

Gracias!

Por T1000

Claber

121 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 05 Ago 2011 07:29 pm
Pues mira, por más que lo he intentado, el puntero del ratón no se sale de la pantalla. Si se pudiera tal vez podría hacele clic a la tecla tab en el teclado...

:P

Bromas aparte ¿qué es lo que intentas hacer exactamente?.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 05 Ago 2011 07:43 pm
Muy suspicaz..

Te cuento estoy hace 2 dias tratando de poner foco en un text-input dentro de un iframe y no logro hacerlo.. probe con todo lo que te puedas imaginar..

Javascript:

function setFocus(){
document.forms['form1'].txtCod.focus();
}

Jquery:
<script language="javascript">
$(document).ready(function(){
$("#txtCod").focus();
});
</script>

Lo ultimo que probe fue ponerle en el body, en el onload una funcion que simulaba un click de un boton, el mismo ejecutaba otra funcion setFocus.

Ninguna de estas funcionaron.. al cargar el iframe con la pagina, no daba foco al text-input indicado.

Por eso pense en que se ejecute 3 veces TAB, siendo que cuando carga el iframe con la pagina, al dar 3 veces tab llego al text-input que quiero darle el focus.

Si me podes ayudar te agradeceria muchisimo!

Saludos

Por T1000

Claber

121 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 06 Ago 2011 01:24 pm
El problema es que intentas referenciar un elemento que está dentro de un iframe. Los iframe están en un DOM diferente de document.

Para referenciar el DOM que está en el iframe primero debes referenciar el iframe que te interesa.
Por ejemplo:

Código Javascript :

var miiframe = document.getElementById("id_de_iframe");
miiframe.contentDocument.forms['form1'].txtCod.focus();


Más información aquí: http://w3schools.com/jsref/dom_obj_frame.asp

Personalmente evito usar frames e iframes. Prefiero cargar todo mediante AJAX cuando sea posible.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 08 Ago 2011 02:01 pm
Drive! aunque no lo puedas creer.. no funciona..

Copio el codigo que imprime cuando abro el iframe:

Código HTML :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="../js/abm/jquery-1.2.6.min.js" type="text/javascript"></script>
    <script src="../js/abm/thickbox-compressed.js" type="text/javascript"></script>
    <script type="text/javascript" src="../js/Utils.js"></script>
    <script type="text/javascript">
        function setFocus()
        {
        var miiframe = document.getElementById("TB_iframeContent");
        miiframe.contentDocument.forms['form1'].txtCod.focus();
        } 
    </script>
</head>
<body id="ctl00_body" onload="setFocus()">
    <form id="aspnetForm" onsubmit="javascript:return WebForm_OnSubmit();" action="Test1.aspx"
    method="post" name="aspnetForm">
      ....
      <!--Este es el boton que abre el iframe con un efecto popup: uso para esto el thickbox.js -->
      <div class="btn_nuevo">
         <a id="ct_PopUpNuevo" class="thickbox" href="PopUpTest1.aspx?TB_iframe=true&height=150&width=400">
            <input id="Button1" class="Button" type="button" value="Nuevo">
         </a>
      </div>
      ....
    </form>
    <div id="TB_overlay" class="TB_overlayBG">
    </div>
    <div id="TB_window" style="margin-left: -215px; width: 430px; margin-top: -95px;
        display: block;">
        <div id="TB_title">
        </div>
        <iframe id="TB_iframeContent" frameborder="0" style="width: 429px; height: 162px;"
            onload="tb_showIframe()" name="testFrame" src="http://localhost:50430/PopUpTest1.aspx?"
            hspace="0">
            <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
            </head>
            <body onclass="bodyPanel">
                <form id="form1" onsubmit="javascript:return WebForm_OnSubmit();" action="PopUpTest1.aspx"
                method="post" name="form1">
                </form>
            </body>
            </html>
        </iframe>
    </div>
</body>
</html>


Estoy haciendo algo mal??

Gracias!!!

Por T1000

Claber

121 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 08 Ago 2011 05:39 pm
El código que has puesto es insuficiente para hacer un debug (falta al menos el archivo "PopUpTest1.aspx"). Pero lo que sí veo es que ejecutas la función en el onload del body del contenedor, me parece que tiene que ser en el onload del iframe.

Aunque ahora que veo este código adivino que tu intención es que ese input tenga el foco ni bien se carga la página. ¿Por qué no mejor usas el atributo "autofocus" en ese input?.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 08 Ago 2011 06:16 pm
DRIVE funciono!!!

Lo llame desde el onload del iframe!!!

Mil graciaass!!! Te debo una!!!

Saludos!!!!

Por T1000

Claber

121 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 08 Ago 2011 08:49 pm
(Y)

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.