Kann nicht konzentrieren, Eingabefeld, in das DOM geladen mit ajax-call
Habe ich verrückt gegangen, um herauszufinden, wie diese Arbeit zu machen. Code sieht in etwa wie:
function onDropDownChanged() {
$("#updatePanel").load(
"myUrl",
{ id: $("#myDropDown option:selected").val() },
onPanelLoaded
);
}
function onPanelLoaded() {
$("#theTextInput").focus();
}
$(document).ready(function() {
$("#myDropDown").change(onDropDownChanged);
}
Ersten mal den ändern-handler ausgelöst wird, macht es den ajax-update, und das Textfeld fokussiert ist.
Jedoch auf spätere änderungen, es weiterhin zu tun, die ajax-update, aber das Textfeld ist noch nie konzentrierte sich wieder.
Fand ich, dass, wenn in onDropDownChanged
ich Hinzugefügt $("#updatePanel").empty()
vor dem ajax-Aufruf, wird das Textfeld würden immer konzentriert. Das problem mit diesem ist die gesamte form verschwindet für eine Sekunde, wodurch eine hässliche flash. Angesichts ajax soll, um Dinge wie diese schön, es ist nicht ein workaround, den ich nutzen möchte.
- Könntest du posten das bisschen HTML, das Sie die Schauspielerei auf, als auch, was HTML geladen wird, die durch den ajax-call?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es scheint, wie es funktionieren sollte, aber ich Frage mich, ob der DOM nicht mehr aktualisiert, von der Zeit der Rückruf aufgerufen wird. Möchten Sie vielleicht, um zu sehen, ob die Einführung einer Verzögerung hilft.
Einschließlich des HTML auf die Seite und was zurückgegeben wird, über die load () - wäre hilfreich, wenn diese nicht funktioniert.
innerHTML
steht der DOM.Ich hatte ein ähnliches problem mit IE6 und IE7, aber
setTimeout()
war nicht eine zuverlässige Lösung. Manchmal funktionierte es, manchmal nicht. Es hat nicht funktioniert auf einigen Maschinen, und die 500ms Wert wurde völlig willkürlich sowieso. Diefocus()
Funktion gearbeitet genau wie erwartet ohne timeout in Firefox und Chrome, natürlich.War meine Lösung zu nennen
focus()
zweimal für IE:Nun DAS getan, was ich bestimmt in den ersten Platz.