2009-06-23 17 views
2

Hallo, ich hatte eine jquery Thickbox modal popu p auf meiner Anwendung. (iframe)
Alles funktioniert gut, aber ich möchte, um den Fokus auf einen spezifischen Eingang fiel d.

JQuery-Thickbox mit Iframe. Setzen Sie den Fokus auf Eingabefeld

Das Iframe lädt eine normale ASPX-Seite, also dachte ich, ich würde ein $ (Dokument) .ready (.. Fokus);
habe ich das Skript in dem IFrame-Code

funktioniert dies jedoch nicht. Ich glaube, dass nach dem "ready" noch ein anderer Code von der Thickbox ausgeführt wird, so dass dieser wieder den Fokus verliert. (Zum Beispiel .. Ich kann den Wert des Eingabefeldes gesetzt, so der Mechanismus funktioniert ..

Kann mir jemand helfen, den Fokus gesetzt? Im Folgenden finden Sie meine Berufung Code ..

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

Ist $ (document) .ready (.. focus) in der aspx-Seite, die der Iframe lädt? –

+0

Ja, ich habe es in den iframe gesetzt –

Antwort

4

thickbox des Containers iframe zeigt durch ein Verfahren, bei dem onload-Ereignis des iframe Element aufrufen. Da der iframe auf der übergeordneten Seite verborgen ist, bis der Inhalt des iframes geladen ist, können Sie den Fokus nicht einfach mit $ (document) .ready (.. focus); Der einfachste Weg, die ich gefunden habe, dies zu umgehen ist setTimeout zu verwenden, um den Funktionsaufruf zu verzögern, die den Fokus setzt erst nach dem iframe angezeigt:

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

Hinweis: Sie könnten die Millisekunden einstellen müssen, schätzen Sie passieren um Timeout festzulegen.

+0

Ja das ist, was ich schließlich getan habe. Also nach dieser Zeit ist es wahrscheinlich die einzige akzeptierte Lösung. –

+0

Ja, das funktioniert definitiv. – pnairn

+0

Danke, sieht so aus für mich! –

0

von docs.jquery.com:

Löst den Fokus Ereignis jedes verglichene Element

Diese alle Funktionen verursacht, die gebunden sind an th. Das Fokus-Ereignis, das ausgeführt werden soll. Beachten Sie, dass die Fokusmethode der zugrunde liegenden Elemente nicht ausgeführt wird.

Das heißt, Ihr Code sollte eher sein: $ ('# input_field') erhalten (0) .focus()

Der Unterschied ist, dass Sie das DOM-Element in meinem Beispiel. eigenes Fokuselement, während Sie in Ihrem jQuery verwenden.

Das funktioniert immer noch nicht, aber ist vielleicht ein Schritt in die richtige Richtung.

Cheers,

+1

Sowohl die jquery Fokus und normalen Javascript Fokus Methoden haben nicht den gewünschten Effekt. Ich denke, dass, nachdem ich den Fokus gesetzt habe, eine andere Methode der Thickbox übernimmt und etwas anderes fokussiert. –

Verwandte Themen