jquery-event für ein element Rendern

Ich versuche, alles zu tun, dom-Manipulationen Bildschirm ausschalten und dann wieder sichtbar machen. Die funktioniert, außer ich habe jetzt die situation, wo ich versuche, es zu tun mit einer form, die ich will, um den Fokus auf das erste input-text-auf-rendering der browser.

So etwas wie: myForm.prependTo(myDiv).show().find('input:first').focus();

Problem ist, dass der Fokus wird aufgerufen, bevor die form fertig rendering, die Ursache der schöne Fehler 'Kann nicht verschieben Sie den Fokus auf das Steuerelement, denn es ist unsichtbar, nicht aktiviert oder von einem Typ, der nicht akzeptiert, focus'

Wie gehen andere web-Entwickler behandeln die ähnliche situation zu manipulieren Elemente außerhalb des Bildschirms und dann macht es sichtbar? Ich möchte die jQuery-hatte sowas
myForm.prependTo(myDiv, function() { /* on render code here */})

Ich kenne einen Weg, es zu tun, setzt ein Zeitlimit und wenn es ausgelöst wird, lege ich den Fokus auf den input, aber ich fühle mich wie das ist wirklich nicht der sauberste Weg, Dinge zu tun. Ich weiß, das iframe hat ein onload-Ereignis, so bin ich neugierig, ob die Menschen in der Regel ziehen Ihre Elemente in einem verborgenen iframe und hören für seine load-Ereignis zu wissen, wenn das element beendet ist rendering? Wenn ja könnten Sie mir ein Beispiel dafür?

Gibt es einen Grund, Sie nicht in der Lage bist zu rufen .focus nach dem das Formular angezeigt wird?
wie ich schon sagte, bekomme ich "Sie können nicht verschieben Sie den Fokus..." - Fehler. Dies ist aufgrund der Tatsache, dass der Fokus genannt, während der browser noch Rendern des Formulars. Grundsätzlich ist der browser sagt: 'hey you cant Fokus auf das element, es ist nicht sichtbar'.
Ok, ich hatte den Eindruck, dass myDiv war nicht angezeigt, bis später.
Was genau machst du offscreen? In Fall, dass Sie nicht erkennen, die meisten DOM-Manipulationen nicht geschehen, Leben, wie Ihr code ausgeführt wird. Der browser neigt dazu, Warteschlange bis die Manipulationen und dann re-layout der Seite, wenn Sie Sie JS abgeschlossen.
Offscreen habe ich Elemente einer form hinzufügen. Nach, dass ich verschieben Sie es auf eine leere Mitte div und dann sichtbar machen (mit .show()) und dann den Fokus auf das erste Eingabefeld. Nichts besonderes.

InformationsquelleAutor paul smith | 2012-04-24

Schreibe einen Kommentar