etreu Geschrieben 22. September 2009 Teilen Geschrieben 22. September 2009 Ich habe aktuell ein kurioses Problem. Ich will nach einem Ajax-Update eines Seitenbereichs einem Textfeld den Fokus geben. Ich habe es via document.getElementById('meineId').focus() probiert und zusätzlich über jQuery('#meineId').focus(). Nur IE7 scheint dies zu ignorieren (IE6 und 8 sind hier netter). Wenn ich mir nach dem Request document.activeElement.id ausgeben lassen, so bekomme ich mein body-Element. Wenn ich vor dem Aufruf von focus() mir etwas mit alert() ausgeben lasse, dann wird der Fokus allerdings gesetzt. Hat jemand von euch schon mal etwas ähnliches erlebt? Ich würde gern ein Beispiel posten, aber dafür müsste ich erst eines konstruieren (da die Anwendung auf JSF/Facelets aufsetzt). Ich hoffe meine verbale Beschreibung führt zum Erfolg, sonst erstelle ich noch ein Beispiel. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
T3D Geschrieben 22. September 2009 Teilen Geschrieben 22. September 2009 Dein Problem ist es das du versuchst einen Focus zu setzen obwohl das Feld noch nicht existiert. Was du daran erkennen kannst weil es ja funktioniert wenn du ein Alert davor setzt. Kannst du zbsp mit einem timeout umgehn. aber das is auch nicht 100% sicher das es dann immer und ueberall geht. Kommt halt auch auf die Rechnerleistung an :C Aber wie du das nun ordentlich umgehn kannst faellt mir leider grade keine saubere loesung zu ein :/ Ted Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
schokopop Geschrieben 23. September 2009 Teilen Geschrieben 23. September 2009 Ich kenne es von Prototype, das man ein onSuccess Event hat. Gibt es soetwas bei jQuery eventuell auch? Dann könnte man dort den Focus setzen. Bitte nicht steinigen, falls es dies nicht bei jQuery nicht gibt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 24. September 2009 Autor Teilen Geschrieben 24. September 2009 Der Ablauf des Ajax-Updates: 1. Event durch User ausgelöst 2. Ajax-Update auslösen 3. oncomplete (entspricht onSuccess) soll den Focus setzen (also nach dem Update des DOM-Trees) Mit einem Timeout hatte ich es auch schon versucht, allerdings ohne Erfolg. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 1. Oktober 2009 Autor Teilen Geschrieben 1. Oktober 2009 Nach der Beschreibung unter activeElement Property (document, HTMLDocument Constructor) hatte ich auch schon festgestellt, dass ich als aktives Element das body-Element erhalte. Deswegen kam ich auf die Idee auch mal setActive() zu benutzen. Et voilà , es funktioniert: oncomplete="x = document.getElementById('<IdDesElementsDasDenFokusErhaltenSoll>'); try{x.setActive();} catch(e) {}; x.focus();" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.