Tengo cuatro controles en una página con el panel de actualización. Inicialmente, el enfoque del mouse se establece en el primer control. Cuando publico parcialmente la página en el servidor, el foco se mueve automáticamente al primer control desde el último control enfocado desde el control al que he tabulado. ¿Hay alguna forma de mantener el último foco?¿Cómo puedo mantener la posición de foco en UpdatePanel después de la publicación parcial de página atrás
5
A
Respuesta
10
Tome un vistazo a Restoring Lost Focus in the Update Panel with Auto Post-Back Controls:
La idea básica detrás de la solución es guardar el ID del control con el foco de entrada antes de que se actualice el panel de actualización y ajuste de entrada centrarse de nuevo a ese control después el panel de actualización está actualizado.
Vengo con el siguiente JavaScript que restaura el foco perdido en el panel de actualización.
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
Me parece más elegante:
(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);
});
})();
Cuestiones relacionadas
- 1. Mantener posición de la página en la devolución de datos
- 2. Cómo mantener la posición de ListView
- 3. Título de la página después de perder UpdatePanel asyncpostback
- 4. Cómo controlar qué JavaScript se ejecuta después de la devolución de datos parcial de UpdatePanel endRequest?
- 5. Cómo mantener la página de posición de desplazamiento después de una devolución de datos en asp.net página
- 6. Mantener la posición de desplazamiento después de la devolución de datos asincrónica desde el panel de actualización
- 7. Cómo mantener TinyMCE después de la devolución de datos en un UpdatePanel
- 8. jquery datepicker ms ajax updatepanel no funciona después de la publicación
- 9. CListCtrl: ¿Cómo mantener la posición de desplazamiento?
- 10. Mantener la posición de desplazamiento en cuadros de lista en paneles de actualización, NO la página
- 11. ¿Cómo puedo evitar que una página salte a la posición superior después de una validación fallida?
- 12. LinkButtons en IE10 no realizando la publicación atrás
- 13. WPF zoom de lienzo y mantener la posición de desplazamiento
- 14. TextBox - ¿Puedo mantener la selección resaltada cuando pierde el foco?
- 15. Mantener la ruta del control FileUpload después de la devolución
- 16. xterm mantener la página de menos en el terminal después de la salida
- 17. cómo mantener la posición de la barra de desplazamiento en la vista de lista de Android?
- 18. ¿Cómo uso updatePanel en asp.net sin refrescar toda la página?
- 19. El navegador ASP.NET muestra "la página web ha caducado" para el botón Atrás (después de una publicación posterior)
- 20. cambiando la posición de un elemento css después de desplazarse hacia abajo en la página
- 21. Cómo volver a cargar la página cuando se presiona atrás, después de un pushState?
- 22. Ver no actualizar después de la publicación
- 23. Fuerza la posición de desplazamiento de la página hacia arriba al actualizar la página en HTML
- 24. JFormattedTextField posición de cursor en el foco
- 25. cómo recordar la posición de desplazamiento de la página
- 26. Jquery Elegido foco en la carga de la página (¿onLoad?)
- 27. Ignorando la etiqueta base después de la publicación
- 28. ¿Cómo evitar el reinicio de la posición de desplazamiento de la página después de la manipulación del DOM?
- 29. ¿Cómo puedo mantener la misma URL en la barra de direcciones para cada página?
- 30. evitar el botón Atrás después de la página de cierre de sesión