Как я сохраняю позицию фокуса в UpdatePanel после страницы частичное сообщение назад

У меня есть четыре средств управления на странице с панелью обновления. Первоначально фокус мыши установлен сначала управлять. Когда я частично отправляю назад страницу на сервер, фокус автоматически перемещается для первого управления от последнего сфокусированного управления от управления, к которому я снабдил вкладками вниз. Там какой-либо путь состоит в том, чтобы уделить последнее внимание?

5
задан Robert Harvey 10 July 2016 в 16:36
поделиться

1 ответ

Взгляните на Восстановление утраченного фокуса на панели обновлений с помощью элементов управления автоматическим постбэком :

Основная идея решения - сохранить Идентификатор элемента управления с фокусом ввода до обновления панели обновления, и установите фокус ввода обратно на этот элемент управления после обновления панели обновления.

У меня есть следующий код JavaScript, который восстанавливает потерянный фокус в панели обновления.

 var lastFocusedControlId = ""; 
 
function focusHandler (e) {
document.activeElement = e.originalTarget; 
} 
 { {1}} function appInit () {
if (typeof (window.addEventListener)! == "undefined") {
window.addEventListener ("focus", focusHandler, true); {{ 1}}} 
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; { {1}} 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); 
 
10
ответ дан 18 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: