J'ai quatre contrôles dans une page avec panneau de mise à jour. Initialement, le focus de la souris est réglé sur le premier contrôle. Lorsque je publie partiellement la page sur le serveur, la mise au point se déplace automatiquement vers le premier contrôle depuis le dernier contrôle ciblé à partir du contrôle sur lequel j'ai appuyé. Y a-t-il un moyen de maintenir le dernier foyer?Comment maintenir la position de mise au point dans UpdatePanel après la page partielle retour
5
A
Répondre
10
Jetez un oeil à Restoring Lost Focus in the Update Panel with Auto Post-Back Controls:
L'idée de base de la solution consiste à enregistrer l'ID du contrôle avec mise au point d'entrée avant le panneau de mise à jour est mis à jour et mettre en entrée mise au point arrière à ce contrôle après le panneau de mise à jour est mis à jour.
Je viens avec le JavaScript suivant qui restaure le focus perdu dans le panneau de mise à jour.
var lastFocusedControlId = ""; function focusHandler(e) { document.activeElement = e.originalTarget; } function appInit() { if (typeof(window.addEventListener) !== "undefined") { window.addEventListener("focus", focusHandler, true); } Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(pageLoadingHandler); Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(pageLoadedHandler); } function pageLoadingHandler(sender, args) { lastFocusedControlId = typeof(document.activeElement) === "undefined" ? "" : document.activeElement.id; } function focusControl(targetControl) { if (Sys.Browser.agent === Sys.Browser.InternetExplorer) { var focusTarget = targetControl; if (focusTarget && (typeof(focusTarget.contentEditable) !== "undefined")) { oldContentEditableSetting = focusTarget.contentEditable; focusTarget.contentEditable = false; } else { focusTarget = null; } targetControl.focus(); if (focusTarget) { focusTarget.contentEditable = oldContentEditableSetting; } } else { targetControl.focus(); } } function pageLoadedHandler(sender, args) { if (typeof(lastFocusedControlId) !== "undefined" && lastFocusedControlId != "") { var newFocused = $get(lastFocusedControlId); if (newFocused) { focusControl(newFocused); } } } Sys.Application.add_init(appInit);
3
Je trouve cela plus élégant:
(function(){
var focusElement;
function restoreFocus(){
if(focusElement){
if(focusElement.id){
$('#'+focusElement.id).focus();
} else {
$(focusElement).focus();
}
}
}
$(document).ready(function() {
$(document).on('focusin', function(objectData){
focusElement = objectData.currentTarget.activeElement;
});
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(restoreFocus);
});
})();
Questions connexes
- 1. LinkButton dans UpdatePanel disparaît après la publication partielle d'une page
- 2. La boîte de dialogue modale empêche le retour de la mise au point après l'impression
- 3. IE ralentir après mise à jour partielle updatepanel
- 4. Mise au point absolue dans la mise en page Android
- 5. Réglage de la mise au point après animation Div
- 6. Comment arrêter un lien de changer la position sur la page (maintenir la position de défilement arrière)
- 7. Maintenir la position de défilement à la page
- 8. Comment maintenir la position de défilement après l'échec de la validation côté client?
- 9. HTML/JavaScript: Mise au point de la page
- 10. déterminer la position de la souris sur un événement de mise au point de la fenêtre
- 11. HTML mise en page mise au point
- 12. La page de rendu UpdatePanel et Repeater ne répond pas après le post-retour
- 13. Formats HTML correctement après la mise au point appliquée
- 14. actualisation de page partielle automatique dans asp.net sans UpdatePanel
- 15. Sélection du contenu d'un TextBox ASP.NET dans un UpdatePanel après une publication partielle de page
- 16. Treeview maintenir la position de défilement
- 17. Comment faire la mise au point par défaut dans la page de contenu à partir de la page maître
- 18. Maintenir la position de changeurs sur Div après page postback (ASP.NET)
- 19. Vérification de la mise au point d'un élément DOM
- 20. Désactivation de la mise au point dans TextView
- 21. Mise au point de la caméra S60
- 22. Perdre la mise au point d'un JTextField
- 23. partielle dans l'erreur de mise en page
- 24. Vérification constante de la mise au point de la fenêtre
- 25. Actualisation partielle de la page jQuery après l'envoi d'un formulaire
- 26. Mise en page avec la position dynamique
- 27. ASP.NET MVC: Retour à la position précédente après la publication
- 28. Set Mise au point à une zone de texte après la validation des données dans la page .ASP
- 29. Mise au point dans ASP
- 30. Comment puis-je empêcher la mise au point dans Windows?