2009-06-23 4 views
2

Salut j'avais un jquery thickbox modal popu p sur mon application. (iframe)
Tout fonctionne très bien, mais je veux mettre l'accent à un Fiel d'entrée spécifique d. L'Iframe charge une page aspx normale donc j'ai pensé faire un $ (document) .ready (.. focus);
Je mets ce script dans le code iFrame

JBuery thickbox avec iframe. Mettre l'accent sur le champ de saisie

Toutefois, cela ne fonctionne pas. Je crois que, après le "prêt", un autre code est exécuté par l'thickbox de sorte qu'il perd de nouveau le focus. (Par exemple .. JE définir la valeur du champ de saisie de sorte que le mécanisme fonctionne ..

Quelqu'un peut-il me aider à définir le focus? Voici mon code d'appel ..

<a href="page.aspx?placeValuesBeforeTB_=savedValues&TB_iframe=true&height=550&width=700" title="Add" class="thickbox">Add</a> 
+0

Est-ce que $ (document) .ready (.. focus) est dans la page aspx que l'iframe charge? –

+0

Oui, je l'ai mis dans l'iframe –

Répondre

4

ThickBox affiche le conteneur du iframe en appelant une méthode dans l'événement onload de l'élément IFRAME. Comme l'iframe est caché sur la page parente jusqu'à ce que le contenu de l'iframe soit chargé, vous ne pouvez pas définir le focus simplement en utilisant $ (document) .ready (.. focus) ;. La meilleure façon que j'ai trouvé pour se déplacer est d'utiliser setTimeout pour retarder l'appel de fonction qui définit la mise au point jusqu'à ce que l'iframe s'affiche:

jQuery(document).ready(function() {   
    setTimeout(function(){ 
     $('#YourElementID').focus(); 
    },200); 
}); 

Note: Vous pourriez avoir à ajuster les millisecondes vous apprécient passer à setTimeout.

+0

Oui c'est ce que j'ai finalement fait .. Donc après cette période c'est probablement la seule solution acceptée. –

+0

Oui, cela fonctionne vraiment. – pnairn

+0

Merci, ça a l'air de marcher pour moi! –

0

de docs.jquery.com:

déclenche l'événement de mise au point de chaque élément adapté

Cela provoque toutes les fonctions qui ont été liés à th. e événement de mise au point à exécuter. Notez que cela n'exécute pas la méthode de mise au point des éléments sous-jacents.

Cela signifie, votre code devrait plus probable: $ ('# input_field') get (0) .focus()

La différence est que vous utilisez dans mon exemple de l'élément DOM. propre élément de focus, alors que dans le vôtre, vous utilisez jQuery.

Cela ne fonctionne toujours pas, mais c'est peut-être un pas dans la bonne direction.

Vive,

+1

Les méthodes de mise au point de jquery et de mise au point javascript normale n'ont pas l'effet désiré. Je pense qu'après avoir réglé le focus, une autre méthode de l'thickbox prend le dessus et concentre autre chose .. –

Questions connexes